郑州腾讯网站建设,临夏网站建设,怎么做flash网站,建设银行个人网银网站文章目录1. 题目2. 解题1. 题目
Dota2 的世界里有两个阵营#xff1a;Radiant(天辉)和 Dire(夜魇)
Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中#xff0c;每一位参议员都可以行…
文章目录1. 题目2. 解题1. 题目
Dota2 的世界里有两个阵营Radiant(天辉)和 Dire(夜魇)
Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中每一位参议员都可以行使两项权利中的一项 禁止一名参议员的权利 参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。 宣布胜利 如果参议员发现有权利投票的参议员都是同一个阵营的他可以宣布胜利并决定在游戏中的有关变化。
给定一个字符串代表每个参议员的阵营。字母 “R” 和 “D” 分别代表了 Radiant天辉和 Dire夜魇。 然后如果有 n 个参议员给定字符串的大小将是 n。
以轮为基础的过程从给定顺序的第一个参议员开始到最后一个参议员结束。 这一过程将持续到投票结束。所有失去权利的参议员将在过程中被跳过。
假设每一位参议员都足够聪明会为自己的政党做出最好的策略你需要预测哪一方最终会宣布胜利并在 Dota2 游戏中决定改变。输出应该是 Radiant 或 Dire。
示例 1
输入RD
输出Radiant
解释第一个参议员来自 Radiant 阵营并且他可以使用第一项权利让第二个参议员失去权力
因此第二个参议员将被跳过因为他没有任何权利。
然后在第二轮的时候第一个参议员可以宣布胜利因为他是唯一一个有投票权的人示例 2
输入RDD
输出Dire
解释
第一轮中,第一个来自 Radiant 阵营的参议员可以使用第一项权利禁止第二个参议员的权利
第二个来自 Dire 阵营的参议员会被跳过因为他的权利被禁止
第三个来自 Dire 阵营的参议员可以使用他的第一项权利禁止第一个参议员的权利
因此在第二轮只剩下第三个参议员拥有投票的权利,于是他可以宣布胜利提示
给定字符串的长度在 [1, 10,000] 之间.来源力扣LeetCode 链接https://leetcode-cn.com/problems/dota2-senate 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
使用两个队列分别存放人员的 idx两个队列的队头比较较小的挪至自己队尾并 idx n较大的从队列里删除
class Solution {
public:string predictPartyVictory(string senate) {queueint r, d;int n senate.size();for(int i 0; i n; i){if(senate[i] R)r.push(i);elsed.push(i);}while(!r.empty() !d.empty()){if(r.front() d.front())//序号小的先del对方序号最小的{d.pop();r.push(r.front()n);// n 表示下一轮r.pop();}else{r.pop();d.push(d.front()n);d.pop();}}return d.empty() ? Radiant : Dire;}
};12 ms 8.3 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步