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 the?ith
?domino has been pushed to the left,dominoes[i] = 'R'
, if the?ith
?domino has been pushed to the right, anddominoes[i] = '.'
, if the?ith
?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?'.'
.
這次的代碼明顯有點(diǎn)長,主要分多種情況,首先起始端跟末端我是單獨(dú)判斷的,
其次就是寫一個(gè)函數(shù)找到最近的非'.'的char,往左查,跟往右查,分別一個(gè)函數(shù)
L...R? ?R....R? ?L....L? R....L?
主要是這4種情況,起始主要就是判斷最后一種情況,當(dāng)最后一種情況的時(shí)候,需要寫一個(gè)函數(shù),判斷距離左邊跟右邊的距離,離哪個(gè)近則按那個(gè)方向來看,如果相等,則不用動(dòng)、
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.