力扣--649.Dota2参议院

embedded/2024/9/26 1:24:40/

Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)

Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的 一 项:

  • 禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失 所有的权利 
  • 宣布胜利:如果参议员发现有权利投票的参议员都是 同一个阵营的 ,他可以宣布胜利并决定在游戏中的有关变化。

给你一个字符串 senate 代表每个参议员的阵营。字母 'R' 和 'D'分别代表了 Radiant(天辉)和 Dire(夜魇)。然后,如果有 n 个参议员,给定字符串的大小将是 n

以轮为基础的过程从给定顺序的第一个参议员开始到最后一个参议员结束。这一过程将持续到投票结束。所有失去权利的参议员将在过程中被跳过。

假设每一位参议员都足够聪明,会为自己的政党做出最好的策略,你需要预测哪一方最终会宣布胜利并在 Dota2 游戏中决定改变。输出应该是 "Radiant" 或 "Dire" 。

示例 1:

输入:senate = "RD"
输出:"Radiant"
解释:
第 1 轮时,第一个参议员来自 Radiant 阵营,他可以使用第一项权利让第二个参议员失去所有权利。
这一轮中,第二个参议员将会被跳过,因为他的权利被禁止了。
第 2 轮时,第一个参议员可以宣布胜利,因为他是唯一一个有投票权的人

示例 2:

输入:senate = "RDD"
输出:"Dire"
解释:
第 1 轮时,第一个来自 Radiant 阵营的参议员可以使用第一项权利禁止第二个参议员的权利。
这一轮中,第二个来自 Dire 阵营的参议员会将被跳过,因为他的权利被禁止了。
这一轮中,第三个来自 Dire 阵营的参议员可以使用他的第一项权利禁止第一个参议员的权利。
因此在第二轮只剩下第三个参议员拥有投票的权利,于是他可以宣布胜利

提示:

  • n == senate.length
  • 1 <= n <= 104
  • senate[i] 为 'R' 或 'D'
java">class Solution {public String predictPartyVictory(String senate) {Queue<Integer> radiant=new LinkedList<>();Queue<Integer> dire=new LinkedList<>();int n=senate.length();for(int i=0;i<n;i++){if(senate.charAt(i)=='R'){radiant.add(i);}else{dire.add(i);}}while(!radiant.isEmpty()&&!dire.isEmpty()){int i = radiant.poll();int j = dire.poll();if(i<j){radiant.add(i+n);}else{dire.add(j+n);}}return radiant.isEmpty()?"Dire":"Radiant";}
}


http://www.ppmy.cn/embedded/112136.html

相关文章

【数据结构OJ】DS线性表—多项式相加

题目描述 对于一元多项式p(x)p0p1xp2x2…pnxn&#xff0c;每个项都有系数和指数两部分&#xff0c;例如p2x2的系数为p2,指数为2。 编程实现两个多项式的相加。 例如5x2x23x3&#xff0c;-5-x6x24x4&#xff0c;两者相加结果&#xff1a;8x23x34x4 其中系数5和-5都是x的0次方…

模拟面试后端开发复盘

目录 一&#xff1a;项目的系统开发和设计思路 二&#xff1a;Java的反射是什么&#xff1f;在项目中有用到吗&#xff1f; 三&#xff1a;多态的实现原理 四&#xff1a;项目中的redis是用在了哪里 五&#xff1a;Session和Cookie的区别&#xff0c;Cookie可以被修改吗&a…

使用 Vue 的事件总线:为了实现点击当前按钮关注或取消关注时,另一个页面的 Vue 组件中的表格数据自动刷新

创建事件总线 在 src 目录下创建一个新的文件&#xff0c;例如 eventBus.js&#xff0c;并添加以下代码&#xff1a; import Vue from vue; export const EventBus new Vue(); 在当前组件中触发事件 在第一个组件的 Upby3 方法中&#xff0c;调用事件总线来触发事件&#xff1…

ubuntu中QT+opencv在QLable上显示摄像头

ubuntu中QTopencv在QLable上显示摄像头 饭前的一篇文章吧&#xff0c;写完吃饭走 图像在机器视觉中的重要性是不可忽视的。机器视觉是指计算机利用图像处理技术进行图像识别、分析和理解的科学与技术领域。图像是机器视觉的输入数据&#xff0c;通过分析和处理图像&#xff0…

SQL注入(数据库)简介

SQL注入简介 SQL注入的历史地位&#xff1a;SQL注入的原理&#xff1a;SQL的防范措施&#xff1a;总结: SQL注入的历史地位&#xff1a; SQL注入技术是WEB安全史上的一个转折点&#xff0c;在SQL技术兴起之前&#xff0c;黑客的主要攻击对象是系统软件&#xff0c;在黑客与安全…

【运维资料】网络监控运维管理解决方案(PPT原件完整版)

构建一体化运维监控平台的核心策略涵盖了几个关键维度&#xff0c;旨在打造一个高效、灵活且稳定的系统管理体系。首要任务是确立清晰的监控目标&#xff0c;这要求深入理解业务需求&#xff0c;确保监控范围覆盖关键性能指标、服务状态及潜在风险点。随后&#xff0c;整合现有…

Golang | Leetcode Golang题解之第395题至少有K个重复字符的最长子串

题目&#xff1a; 题解&#xff1a; func longestSubstring(s string, k int) (ans int) {for t : 1; t < 26; t {cnt : [26]int{}total : 0lessK : 0l : 0for r, ch : range s {ch - aif cnt[ch] 0 {totallessK}cnt[ch]if cnt[ch] k {lessK--}for total > t {ch : s[…

【Lua学习】Lua最最基础的

Lua是什么&#xff1f; Lua是一种强大、高效、轻量级、可嵌入的脚本语言。它支持过程式编程、面向对象编程、函数式编程、数据驱动编程和数据描述。 Lua将简单的过程式语法与基于关联数组和可扩展语义的强大数据描述构造相结合。Lua是动态类型的&#xff0c;通过基于寄存器的虚…