Leetcode 838 推多公尺諾 C

2021-10-09 03:30:44 字數 1510 閱讀 2820

一行中有 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』; 以及 『.』;

0  1  2  3  4  5  6  7  8  9 10 11 12 13

. l . r . . . l r . . l . .

1 1 7 7 7 7 11 11 11 //從右向左記錄l,只有遇到l才開始記錄

3 3 3 3 8 8 8 //從左向右記錄r,只有遇到r才開始記錄

l l . r r .

因此,座標i,距離最近的l的距離為l(i)-i,距離最近的r的距離為i-r(i)

故l(i)-i>i-r(i) 其為l

l(i)-ipushdominoes

(string dominoes)

else

if(dominoes[i]

=='r')if

(flag) l[i]

= place;

} flag =

false

;for

(int i=

0; i

)else

if(dominoes[i]

=='l')if

(flag) r[i]

= place;

} string ans;

for(

int i=

0; i

return ans;

}

LeetCode 838 推多公尺諾

一行中有n張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。給定表示初始狀態的字串 s 如果第 i 張多公尺諾骨牌被推向左邊,則s i l 如果第 i 張多公尺諾骨牌被推向右邊,則s i r 如果第 i 張多公尺諾骨牌沒有被推動,則s i 返回表示最終...

leetcode838 推多公尺諾

一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的...

LeetCode 838 推多公尺諾

一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的...