原题链接:力扣

描述:

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

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

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

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

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

dominoes[i] = 'L',表示第 i 张多米诺骨牌被推向左侧,
dominoes[i] = 'R',表示第 i 张多米诺骨牌被推向右侧,
dominoes[i] = '.',表示没有推动第 i 张多米诺骨牌。
返回表示最终状态的字符串。

示例 1:

输入:dominoes = "RR.L"
输出:"RR.L"
解释:第一张多米诺骨牌没有给第二张施加额外的力。
示例 2:

输入:dominoes = ".L.R...LR..L.."
输出:"LL.RR.LLRRLL.."

提示:

n == dominoes.length
1 <= n <= 105
dominoes[i] 为 'L'、'R' 或 '.'

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/push-dominoes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

* 解题思路:
* 一张牌往哪边倒,只有两个因素决定,当前的方向,以及起始位置的方向。
* 所以就分拆成9种情况进行分析。比如起始'.',当前'L',那么起始和当前之间全部设置为L。

代码:

public class Solution838 {public String pushDominoes(String dominoes) {char[] chars = dominoes.toCharArray();int start = 0;for (int i = 0; i < chars.length; i++) {char currentChar = chars[i];char startChar = chars[start];if (startChar == '.') {if (currentChar == '.') {continue;}if (currentChar == 'L') {setRangeValue(chars, start, i, currentChar);continue;}if (currentChar == 'R') {start = i;continue;}}if (startChar == 'L') {start = i;if (currentChar == '.') {continue;}if (currentChar == 'L') {continue;}if (currentChar == 'R') {continue;}continue;}if (startChar == 'R') {if (currentChar == '.') {if (i == chars.length - 1) {setRangeValue(chars, start, i, 'R');break;}continue;}if (currentChar == 'R') {setRangeValue(chars, start, i, 'R');start = i;continue;}if (currentChar == 'L') {int length = i - start;int middle = length / 2;if (length % 2 == 0) {middle--;}setRangeValue(chars, start, start + middle, 'R');setRangeValue(chars, i - middle, i, 'L');start = i;continue;}continue;}}return new String(chars);}private void setRangeValue(char[] chars, int start, int end, char c) {for (int i = start; i <= end; i++) {chars[i] = c;}}}

力扣解法汇总838-推多米诺相关推荐

  1. Leetcode 838. 推多米诺 C++

    Leetcode 838. 推多米诺 题目 一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立. 在开始时,我们同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻 ...

  2. leetcode 838.推多米诺

    题目地址(838. 推多米诺) https://leetcode-cn.com/problems/push-dominoes/ 题目描述 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时, ...

  3. LeetCode:838. 推多米诺————中等

    题目 838. 推多米诺 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时,同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌.同样地,倒向右边 ...

  4. 【leetcode】838. 推多米诺(模拟)

    题目: 838. 推多米诺 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时,同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌.同样地,倒向右 ...

  5. Java实现 LeetCode 838 推多米诺(暴力模拟)

    838. 推多米诺 一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立. 在开始时,我们同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌. 同样地, ...

  6. ​力扣解法汇总790. 多米诺和托米诺平铺

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  7. 力扣 838. 推多米诺

    题目 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时,同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌.同样地,倒向右边的多米诺骨牌也会推动 ...

  8. ​力扣解法汇总954-二倍数对数组

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  9. ​力扣解法汇总728-自除数

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接: 力扣 ...

最新文章

  1. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!
  2. python学习 第七篇 sql优化
  3. mysql 5.5.修改库名_安全快速修改Mysql数据库名的5种方法
  4. Python3 爬虫学习笔记 C17【爬虫框架 pyspider — 基本使用】
  5. 计算机相近专业有哪些,计算机相关的专业有哪些
  6. Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks -译文
  7. poj 1905 Expanding Rods 二分
  8. mac 使用 pf 做端口转发
  9. HDU 2676 Matrix
  10. 20190813 On Java8 第一章 对象的概念
  11. KITTI数据集解析和可视化
  12. 成功三大定律:荷花定律、金蝉定律、竹子定律
  13. url指定服务器是什么意思,URL是什么意思?网页的URL是什么意思?
  14. C语言期末考试知识点总结
  15. windows Server 2008 安装360随身wifi驱动
  16. 【群晖NAS】 利用云服务器 FRP技术 实现内网穿透
  17. (四)Android中的TextView组件
  18. 将一个整数分解为质数的乘积
  19. 北漂经历 | 我在北京这几年(全)
  20. CIL----公共中间语言

热门文章

  1. 云端服务器上传本地项目
  2. 从零入门机器学习之开宗明义:编程与数据思维
  3. Linux与网络服务(一)网络服务相关概念通俗解释(科普向)
  4. 【渝粤教育】 国家开放大学2020年春季 1332中文学科论文写作 参考试题
  5. 树上随机游走的期望距离
  6. iOS开发之应用首次启动显示用户引导 - 疯狂的萝卜 - 博客园
  7. C++:C++11的牛逼特性
  8. ssh和rsh的区别、Linux rsh命令
  9. Linux中的yum是什么?如何配置?如何使用?
  10. js:nodejs通过async异步提交事务数据