Leetcode 838. Push Dominoes
There are n
dominoes in a line, and we place each domino vertically upright. In the beginning, we simultaneously push some of the dominoes either to the left or to the right.
After each second, each domino that is falling to the left pushes the adjacent domino on the left. Similarly, the dominoes falling to the right push their adjacent dominoes standing on the right.
When a vertical domino has dominoes falling on it from both sides, it stays still due to the balance of the forces.
For the purposes of this question, we will consider that a falling domino expends no additional force to a falling or already fallen domino.
You are given a string dominoes
representing the initial state where:
dominoes[i] = 'L'
, if theith
domino has been pushed to the left,dominoes[i] = 'R'
, if theith
domino has been pushed to the right, anddominoes[i] = '.'
, if theith
domino has not been pushed.
Return a string representing the final state.
Example 1:
Input: dominoes = "RR.L"
Output: "RR.L"
Explanation: The first domino expends no additional force on the second domino.
Example 2:

Input: dominoes = ".L.R...LR..L.."Output: "LL.RR.LLRRLL.."
Constraints:
n == dominoes.length
1 <= n <= 105
dominoes[i]
is either'L'
,'R'
, or'.'
.
这次的代码明显有点长,主要分多种情况,首先起始端跟末端我是单独判断的,
其次就是写一个函数找到最近的非'.'的char,往左查,跟往右查,分别一个函数
L...R R....R L....L R....L
主要是这4种情况,起始主要就是判断最后一种情况,当最后一种情况的时候,需要写一个函数,判断距离左边跟右边的距离,离哪个近则按那个方向来看,如果相等,则不用动、
Runtime: 19 ms, faster than 74.50% of Java online submissions for Push Dominoes.
Memory Usage: 43.3 MB, less than 84.34% of Java online submissions for Push Dominoes.