【Leetcode】649. Dota2 Senate
2026/6/8 12:08:06 网站建设 项目流程

题目地址:

https://leetcode.com/problems/dota2-senate/description/

给你一个只包含 ‘R’ 和 ‘D’ 的字符串 senate,表示一排参议员的顺序:

‘R’ 代表 Radiant 阵营的参议员
‘D’ 代表 Dire 阵营的参议员

回合制过程(按座位顺序循环进行):从左到右轮到某个仍具有投票权的参议员时,他可以“禁用”对方阵营中某一名仍具有投票权的参议员,使其之后无法再参与(等价于把对手阵营下一位还活跃的人淘汰)。本回合结束后,当前参议员会在下一轮继续参与(除非被别人之前禁用了)。座位顺序是循环的,也就是走到末尾又回到最前面继续。当某一阵营所有参议员都被禁用时,另一阵营获胜。让你输出最后获胜阵营的名字:
“Radiant” 表示 R 阵营胜
“Dire” 表示 D 阵营胜

用队列模拟即可。代码如下:

classSolution{public:stringpredictPartyVictory(string ss){intn=ss.size();queue<int>R,D;for(inti=0;i<n;i++)if(ss[i]=='R')R.push(i);elseD.push(i);while(R.size()&&D.size()){intr=R.front();R.pop();intd=D.front();D.pop();if(r<d)R.push(r+n);elseD.push(d+n);}returnR.empty()?"Dire":"Radiant";}};

时空复杂度O ( n ) O(n)O(n)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询