Leetcode 每日一题
题目链接: 649. Dota2 参议院
难度: 中等
解题思路: 最优的策略是前一个议员一定要禁止后一个最先发言的不同阵营的议员,这样才能保证对本阵营最优。以使得本阵营的越少的人被禁止。按照这个逻辑来完成就行了。
题解:
class Solution:
def predictPartyVictory(self, senate: str) -> str:
R = D = True
flag = 0
senate = [item for item in senate]
while R and D: # 只要有一个确定胜利退出
R = D = False
for i in range(len(senate)):
if senate[i] == 'R':
if flag < 0: # 此时它前面是有D的所以他是被禁止权力的
senate[i] = 'N' # 标记为没权利
else:
R = True
flag += 1
elif senate[i] == 'D':
if flag > 0: # 此时它前面是有R的所以他是被禁止权力的
senate[i] = 'N' # 标记为没权利
else:
D = True
flag -= 1
# print(R, D)
if R:
return "Radiant"
if D:
return "Dire"