LeetCode 649. Dota2 参议院(循环队列)
文章目錄
- 1. 題目
- 2. 解題
1. 題目
Dota2 的世界里有兩個陣營:Radiant(天輝)和 Dire(夜魘)
Dota2 參議院由來自兩派的參議員組成?,F(xiàn)在參議院希望對一個 Dota2 游戲里的改變作出決定。他們以一個基于輪為過程的投票進行。在每一輪中,每一位參議員都可以行使兩項權(quán)利中的一項:
-
禁止一名參議員的權(quán)利:
參議員可以讓另一位參議員在這一輪和隨后的幾輪中喪失所有的權(quán)利。 -
宣布勝利:
如果參議員發(fā)現(xiàn)有權(quán)利投票的參議員都是同一個陣營的,他可以宣布勝利并決定在游戲中的有關變化。
給定一個字符串代表每個參議員的陣營。字母 “R” 和 “D” 分別代表了 Radiant(天輝)和 Dire(夜魘)。
然后,如果有 n 個參議員,給定字符串的大小將是 n。
以輪為基礎的過程從給定順序的第一個參議員開始到最后一個參議員結(jié)束。
這一過程將持續(xù)到投票結(jié)束。所有失去權(quán)利的參議員將在過程中被跳過。
假設每一位參議員都足夠聰明,會為自己的政黨做出最好的策略,你需要預測哪一方最終會宣布勝利并在 Dota2 游戲中決定改變。輸出應該是 Radiant 或 Dire。
示例 1: 輸入:"RD" 輸出:"Radiant" 解釋:第一個參議員來自 Radiant 陣營并且他可以使用第一項權(quán)利讓第二個參議員失去權(quán)力, 因此第二個參議員將被跳過因為他沒有任何權(quán)利。 然后在第二輪的時候,第一個參議員可以宣布勝利,因為他是唯一一個有投票權(quán)的人示例 2: 輸入:"RDD" 輸出:"Dire" 解釋: 第一輪中,第一個來自 Radiant 陣營的參議員可以使用第一項權(quán)利禁止第二個參議員的權(quán)利 第二個來自 Dire 陣營的參議員會被跳過因為他的權(quán)利被禁止 第三個來自 Dire 陣營的參議員可以使用他的第一項權(quán)利禁止第一個參議員的權(quán)利 因此在第二輪只剩下第三個參議員擁有投票的權(quán)利,于是他可以宣布勝利提示: 給定字符串的長度在 [1, 10,000] 之間.來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/dota2-senate
著作權(quán)歸領扣網(wǎng)絡所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
- 使用兩個隊列分別存放人員的 idx
- 兩個隊列的隊頭比較,較小的挪至自己隊尾,并 idx + n
- 較大的從隊列里刪除
12 ms 8.3 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 649. Dota2 参议院(循环队列)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1129. 颜色交替的
- 下一篇: LeetCode 1655. 分配重复整