ZhongKuo0228 / study

0 stars 0 forks source link

649. Dota2 Senate #86

Open fockspaces opened 10 months ago

fockspaces commented 10 months ago

對 queue 還不是很熟悉,經過幾次提點才得到解答

  1. 建立兩個 queue 用來記錄順序
  2. 同時 pop 兩個頭,比誰先,先的人一定會去 ban 敵對對頭
  3. 此時將贏的對頭用 n + i 補回 queue,作為冷卻
  4. 其中一方 queue empty 即失敗
class Solution:
    def predictPartyVictory(self, senate: str) -> str:
        Radiants, Dires, n = [], [], len(senate)
        for i, sen in enumerate(senate):
            if sen == 'R':
                Radiants.append(i)
            else:
                Dires.append(i)
        while Radiants and Dires:
            Radiant, Dire = Radiants.pop(0), Dires.pop(0)
            if Radiant < Dire:
                Radiants.append(n + Radiant)
            else:
                Dires.append(n + Dire)
        return "Radiant" if Radiants else "Dire"