Posted on 2023-05-04 18:09
Uriel 閱讀(52)
評論(0) 編輯 收藏 引用 所屬分類:
模擬 、
閑來無事重切Leet Code
給定一列字符串R和D,代表兩個陣營,每次輪到某個人的時候,可以選擇ban下一個人,或者如果當前所有人都屬于同一陣營時,宣告該陣營勝利,輸出最后勝利的陣營,模擬題
1 #649
2 #Runtime: 47 ms (Beats 70%)
3 #Memory: 13.9 MB (Beats 15%)
4
5 class Solution(object):
6 def predictPartyVictory(self, senate):
7 """
8 :type senate: str
9 :rtype: str
10 """
11 n = len(senate)
12 s, fg = set(), [False] * n
13 b_d = b_r = 0
14 while len(s) != 1:
15 s = set()
16 for i in range(n):
17 if not fg[i]:
18 if senate[i] == 'R':
19 if b_r > 0:
20 b_r -= 1
21 fg[i] = True
22 else:
23 b_d += 1
24 s.add('R')
25 else:
26 if b_d > 0:
27 b_d -= 1
28 fg[i] = True
29 else:
30 b_r += 1
31 s.add('D')
32 return 'Radiant' if 'R' in s else 'Dire'