LeetCode 838. 推多米诺(模拟)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 838. 推多米诺(模拟)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
一行中有 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'; 以及 '.';來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/push-dominoes
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 先處理兩邊向外倒的
- 然后記錄中間的位置,用正負號區分方向
- 遍歷中間間隔的左右位置的符號,分四種情況(都向左,都向右,不動,向中間倒)
40 ms 11 MB
- 優化代碼:在原字符串前面 + L,尾部 + R,最后答案舍去首尾即可,可以簡化代碼量
36 ms 12.6 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 838. 推多米诺(模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode MySQL 1077.
- 下一篇: LeetCode MySQL 1454.