zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 838 推多米诺(暴力模拟)

    838. 推多米诺

    一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立。

    在开始时,我们同时把一些多米诺骨牌向左或向右推。

    在这里插入图片描述

    每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。

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

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

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

    给定表示初始状态的字符串 “S” 。如果第 i 张多米诺骨牌被推向左边,则 S[i] = ‘L’;如果第 i 张多米诺骨牌被推向右边,则 S[i] = ‘R’;如果第 i 张多米诺骨牌没有被推动,则 S[i] = ‘.’。

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

    示例 1:

    输入:".L.R…LR…L…"
    输出:“LL.RR.LLRRLL…”
    示例 2:

    输入:“RR.L”
    输出:“RR.L”
    说明:第一张多米诺骨牌没有给第二张施加额外的力。
    提示:

    0 <= N <= 10^5
    表示多米诺骨牌状态的字符串只含有 ‘L’,‘R’; 以及 ‘.’;

    class Solution {
          public String pushDominoes(String dominoes) {
            char[] d = dominoes.toCharArray();
            int l = -1;
            for (int r = 0; r <= d.length; r++) {
                if (r == d.length || d[r] != '.') {
                    char charL = l == -1 ? 'L' : d[l];
                    char charR = r == d.length ? 'R' : d[r];
                    if (charL == charR) {
                        while (l + 1 < r)
                            d[++l] = charL;
                    } else if (charR == 'L') {
                        int i = r;
                        while (l + 2 < i) {
                            d[++l] = charL;
                            d[--i] = charR;
                        }
                    }
                    l = r;
                }
            }
            return new String(d);
        }
     
    }
    
  • 相关阅读:
    序列JSON数据和四种AJAX操作方式
    jquery.validate和jquery.form.js实现表单提交
    JQuery Validate使用总结1:
    HOWTO: Include Base64 Encoded Binary Image Data (data URI scheme) in Inline Cascading Style Sheets (CSS)(转)
    SharePoint 2007 使用4.0 .Net
    动态IP解决方案
    取MS CRM表单的URL
    从Iframe或新开的窗口访问MS CRM 2011(转)
    Toggle or Hidden MS CRM Tab
    Windows 2008下修改域用户密码
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946059.html
Copyright © 2011-2022 走看看