649. Dota2 参议院

Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)
Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:

  1. 禁止一名参议员的权利:
  2. 参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。
    宣布胜利:
    如果参议员发现有权利投票的参议员都是同一个阵营的,他可以宣布胜利并决定在游戏中的有关变化。
    给定一个字符串代表每个参议员的阵营。字母 “R” 和 “D” 分别代表了 Radiant(天辉)和 Dire(夜魇)。然后,如果有 n 个参议员,给定字符串的大小将是 n。
    以轮为基础的过程从给定顺序的第一个参议员开始到最后一个参议员结束。这一过程将持续到投票结束。所有失去权利的参议员将在过程中被跳过。
    假设每一位参议员都足够聪明,会为自己的政党做出最好的策略,你需要预测哪一方最终会宣布胜利并在 Dota2 游戏中决定改变。输出应该是 Radiant 或 Dire。

    这道题需要考虑两个问题,议员的数量和顺序,我开始的思路是用字典结构来做的,由于没有很好地考虑顺序问题**失败了!!!**代码如下:
class Solution:def predictPartyVictory(self, senate: str) -> str:senateId={'R':True,'D':False}senateMap={True:0,False:0}team={True:"Radiant",False:"Dire"}for i in senate:senateMap[senateId[i]]+=1while(True):tmpMap=senateMap.copy()for i in senate:index=senateId[i]index2=not indexif tmpMap[index]>0:if tmpMap[index2]>0:tmpMap[index]-=1tmpMap[index2]-=1senateMap[index2]-=1elif senateMap[index2]>0:tmpMap[index]-=1senateMap[index2]-=1else:return team[index]

参考了官方解题,是使用的队列(即可以考虑顺序也可以考虑数量),具体代码如下(C++版):

class Solution {public:string predictPartyVictory(string senate) {int n=senate.length();queue<int> Radiant,Dire;for(int i = 0; i < n; ++i){if(senate[i] == 'D') Dire.push(i);else Radiant.push(i);}while(!Radiant.empty() && !Dire.empty()){if(Radiant.front()<Dire.front()) Radiant.push(Radiant.front()+n);else Dire.push(Dire.front()+n);Radiant.pop();Dire.pop();}return !Radiant.empty() ? "Radiant" : "Dire";}
};

运行效果:

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/dota2-senate

Leetcode 每日一题——649. Dota2 参议院相关推荐

  1. LeetCode每日一题--649. Dota2 参议院(贪心 队列)

    题目:跳转至 649. Dota2 参议院 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏 ...

  2. LeetCode每日一题——12.11Dota2 参议院

    Dota2 参议院 题目描述 思路 思路一 思路二 思路三(参考官方解答) 代码(CPP) 思路一实现 思路二实现 思路三实现 题目描述 Dota2 的世界里有两个阵营:Radiant(天辉)和 Di ...

  3. LeetCode 649. Dota2 参议院 | Python

    649. Dota2 参议院 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/dota2-senate/ 题目 Dota2 的世界里有两个阵营:Ra ...

  4. Java实现 LeetCode 649 Dota2 参议院(暴力大法)

    649. Dota2 参议院 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决 ...

  5. 力扣649. Dota2参议院 (Java 详细题解)

    649. Dota2 参议院 一.原题题目(中等) 1.1 题目 ​ Dota2 的世界里有两个阵营:Radiant (天辉)和 Dire(夜魇).Dota2 参议院由来自两派的参议员组成.现在参议院 ...

  6. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  7. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  8. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  9. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

最新文章

  1. 【设计模式】三大类:创建型模式、结构型模式、行为型模式
  2. 根据windows域名找ip
  3. SQLLite (四):sqlite3_prepare_v2,sqlite3_step
  4. php 模数 指数 公钥生成_php实现JWT认证
  5. 2021甘肃平凉高考成绩查询,甘肃省教育考试院:2021年甘肃高考查分入口、查分系统...
  6. Openssl s_server命令
  7. OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)...
  8. 28.Linux/Unix 系统编程手册(上) -- 详述进程创建和程序执行
  9. postman使用教程(1)--发送post请求
  10. CC++初学者编程教程(6) 配置WindowsXP虚拟机与VC6.0
  11. python怎么变白-Python将png透明变为白色并保存为jpg图片
  12. 如何在微信小程序中使用iconfont 1
  13. html5 spin,HTML5 number spinbox controls not triggering a cha
  14. CSS3-数据可视化
  15. 显卡、显卡驱动、Nvcc、Cuda Driver、CudaToolkit 、Cudnn到底是什么?
  16. python建立资料库_python 建立数据库
  17. 第03课:储备-用户故事精要(iPad 版)
  18. 跟着鸟哥学linux【一】
  19. 计算机net是什么意思翻译,net是什么意思_net翻译_读音_用法_翻译
  20. bpmnjs flowable 添加定时事件timeDate,timeDuration,timeCycle

热门文章

  1. 让AI像人类一样思考
  2. 自制简易加湿器(PCB版)
  3. 一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点
  4. EasyPOI实战教程
  5. 【使用jquery编写第一个油猴(tempermonkey)脚本】
  6. Android中常见的4种线程池的理解(转)
  7. RGF相关Python2及Python3的库解决
  8. 美国贫困线是怎么算的
  9. 无风扇cpu测试软件,噪音为零!TT首款无风扇设计CPU散热器
  10. 【计算机科学与技术学的是什么?】