当前位置: 首页 > java >正文

力扣838.推多米诺随笔

“生活就像海洋,只有意志坚强的人,才能到达彼岸。”—— 马克思

题目

n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立。在开始时,同时把一些多米诺骨牌向左或向右推。

每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。

如果一张垂直竖立的多米诺骨牌的两侧同时有多米诺骨牌倒下时,由于受力平衡, 该骨牌仍然保持不变。

就这个问题而言,我们会认为一张正在倒下的多米诺骨牌不会对其它正在倒下或已经倒下的多米诺骨牌施加额外的力。

给你一个字符串 dominoes 表示这一行多米诺骨牌的初始状态,其中:

  • dominoes[i] = 'L',表示第 i 张多米诺骨牌被推向左侧,
  • dominoes[i] = 'R',表示第 i 张多米诺骨牌被推向右侧,
  • dominoes[i] = '.',表示没有推动第 i 张多米诺骨牌。

返回表示最终状态的字符串。

难度:中等

分析

我们遍历字符串,根据当前位置上的值进行分类讨论:

当前值为'.':跳过;

当前值为'L':把之前的'.'置为'L'直到遇到非'.'的位置;

当前值为'R':寻找下一个非'.'的位置,如果没有或者下一个位置为'R',将之间的'.'置为'R',跳到下一个非'.'的位置;如果下一个位置为'L',则将之间的'.'左边的置为'R',右边的置为'L',中间的不变,跳到'L'的下一位。

注意到我们没有判断当前值为'L'并且上一个非'.'位置为'R'的情况是因为该情况已被跳过(在当前值为'R'并且下一个非'.'值为'L'的情况中处理)以避免重复操作。

解答

class Solution {public String pushDominoes(String dominoes) {char[] arr=dominoes.toCharArray();int n=arr.length;int index=0;while (index<n){if (arr[index]=='.'){index++;}else if (arr[index]=='L'){for (int i=index-1;i>=0;i--){if (arr[i]!='.'){break;}arr[i]='L';}index++;}else{int nextIndex;for (nextIndex=index+1;nextIndex<n;nextIndex++){if (arr[nextIndex]!='.'){break;}}if (nextIndex==n||arr[nextIndex]=='R'){for (int i=index+1;i<nextIndex;i++){arr[i]='R';}index=nextIndex;}else{  //index R  nextIndex Lfor (int i=1;index+i<nextIndex-i;i++){arr[index+i]='R';arr[nextIndex-i]='L';}index=nextIndex+1;}}}return new String(arr);}
}

“治于神者,众人不知其功;争于明者,众人知之。”——《墨子》

http://www.xdnf.cn/news/3502.html

相关文章:

  • STM32 ZIBEE DL-20 无线串口模块
  • 【符号调制技术与载波调制技术】
  • JavaScript性能优化实战之运行时性能优化
  • 融智学数学符号体系的系统解读(之一)
  • 【Android】Intent
  • Android Framework学习二:Activity创建及View绘制流程
  • 2025大模型安全研究十大框架合集(10份)
  • 010302-oss_反向代理_负载均衡-web扩展2-基础入门-网络安全
  • 多模态RAG演进-MRAG1.0->MRAG2.0->MRAG3.0
  • 游戏引擎学习第254天:重新启用性能分析
  • 白蚁检测数据集VOC+YOLO格式949张2类别
  • 【计算机视觉】三维视觉:Instant-NGP:实时神经辐射场的革命性突破
  • MSP430G2553驱动0.96英寸OLED(硬件iic)
  • docker安装jenkins v2.504.1集群
  • 【业务领域】InfiniBand协议总结
  • Flowable7.x学习笔记(十七)审批我的待办
  • MySQL 第一讲---基础篇 安装
  • Linux 下使用tcpdump进行网络分析原
  • 颠覆者DeepSeek:从技术解析到实战指南——开源大模型如何重塑AI生态
  • 紫荆阁电玩平台环境搭建与系统运行实录(蒙特卡洛系列)
  • 单片机-STM32部分:1、STM32介绍
  • 【SpringBoot】Spring中事务的实现:声明式事务@Transactional、编程式事务
  • 纯前端专业PDF在线浏览器查看器工具
  • 【数据结构】String字符串的存储
  • 当MCP撞进云宇宙:多芯片封装如何重构云计算的“芯“未来?
  • 循环插入数据库行
  • LEETERS题解
  • 【速写】prune与activate
  • 尝试leaflet+webassemly
  • 【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析