贪心与队列

  • 前言
  • 一、dota2参议院
  • 二、贪心与队列
  • 总结
  • 参考文献

前言

贪心思想 与 队列数据结构的配合,算法题往往就是这样,一种思想配一些数据结构来完美解题。

一、dota2参议院

二、贪心与队列

target:每个人都有禁止别人 和 被别人禁止的 功能,有两队人马,根据顺序,以最好的策略禁止对方,那边会赢?

1-什么是最好的方式禁止对方?
一方得到投票权,那就把最近的另一方可投票的人禁止,让其发挥不了禁止权就被踢出局,那么前一方就尽可能的少损失队员。

core:让一个人还没发挥禁止权就把他踢出局,这是最好的;其次才是把发挥过禁止权的踢出局;

2-怎么才能快速找到另一方的投票人(找到了才能禁止啊!)?
可把两方分类,存入两方人的位置。

3-怎么才能把把禁止的人踢出,而且让禁止别人的人放在后面下一轮再投票?
位置处于小的即处于优势,另一类出队列就不用再入队了,有优势一方入队,且只能在下一轮有禁止优势,则将位置增大n >= senate.length

package everyday.greed;import java.util.LinkedList;
import java.util.Queue;// Dota2参议院
public class PredictPartyVictory {/*target:每个人都有禁止别人 和 被别人禁止的 功能,有两队人马,根据顺序,以最好的策略禁止对方,那边会赢?什么是最好的方式禁止对方?一方得到投票权,那就把最近的另一方可投票的人禁止,让其发挥不了禁止权就被踢出局,那么前一方就尽可能的少损失队员。core:让一个人还没发挥禁止权就把他踢出局,这是最好的;其次才是把发挥过禁止权的踢出局;怎么才能快速找到另一方的投票人(找到了才能禁止啊!)?可把两方分类,存入两方人的位置。怎么才能把把禁止的人踢出,而且让禁止别人的人放在后面下一轮再投票?位置处于小的即处于优势,另一类出队列就不用再入队了,有优势一方入队,且只能在下一轮有禁止优势,则将位置增大n >= senate.length注:模拟起来复杂的地方,就应该换思路/换角度看,利用已学的数据机构和算法思维来关联。注:多问为什么?不仅包括深挖与探究,还包括为什么会想到这个解题答案,问题与答案有什么关联?不能纯靠题感!要双份保险,让我笔试能过。注:平时主多个为什么;竞赛主题感。毕竟平时的积累,才能把题感拉起来。*/public String predictPartyVictory(String senate) {// 位置属性 & 类别属性Queue<Integer> r = new LinkedList<>();Queue<Integer> d = new LinkedList<>();char[] arr = senate.toCharArray();int i = 0, n = arr.length;for (char c : arr) {if (c == 'R') r.offer(i++);else d.offer(i++);}while (!r.isEmpty() && !d.isEmpty()) {int a = r.poll(), b = d.poll();if (a < b) {r.offer(a + n);} else d.offer(b + n);}return r.isEmpty() ? "Dire" : "Radiant";}
}

总结

1)模拟起来复杂的地方,就应该换思路/换角度看,利用已学的数据机构和算法思维来关联。
2)多问为什么?不仅包括深挖与探究,还包括为什么会想到这个解题答案,问题与答案有什么关联?不能纯靠题感!要双份保险,让我笔试能过。
3)平时主多个为什么;竞赛主题感。毕竟平时的积累,才能把题感拉起来。

参考文献

[1] LeetCode Dota2参议院

Dota2参议院[贪心与队列]相关推荐

  1. LeetCode 649. Dota2 参议院(循环队列)

    文章目录 1. 题目 2. 解题 1. 题目 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游 ...

  2. leetcode649(Dota2 参议院:循环队列)

    Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过程的投 ...

  3. Dota2参议院——贪心算法

    文章目录 题目描述 题目分析 数据结构和算法 代码 题目描述 题目来源:图灵官方 题目分析 题目大概意思就是,参议院由两派的参议员组成,即给定一个字符串,只含R和D,双方可以互相废除对方的人员,不参与 ...

  4. Dota2参议院-贪心649-python

    没看答案,贪心思想. class Solution:def predictPartyVictory(self, senate: str) -> str:'''贪心思想胜利策略:优先ban后面出现 ...

  5. 贪心 - Dota2 参议院

    Dota2 参议院 贪心+循环队列 对于当前参议院来说,他的最优选择是禁止下一个最先出现的敌方参议员,这样才能保证己方参议院的安全. 具体的实现采用循环队列. class Solution {publ ...

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

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

  7. leetcode 649. Dota2 参议院(贪心算法)

    Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过程的投 ...

  8. 【力扣649】【秒懂】 Dota2 参议院 之双端队列的解体

    题目 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过 ...

  9. 算法刷题打卡第43天:Dota2 参议院

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

最新文章

  1. 安装了超图、oracle、eclipse、JDK后系统的java进程情况以及java.exe、javaw.exe
  2. 为啥总让我“先去博客园其他网站逛逛”?
  3. Tkinter的Text组件
  4. linux查看信息文件,lsof---Linux查看文件信息的强大工具
  5. Deep Learning(深度学习) 学习笔记(四)
  6. 递归和迭代路由_静态路由在以太网接口中的不同书写会导致路由器怎样的操作结果?...
  7. WordPress导航菜单函数register_nav_menus() 和 wp_nav_menu()
  8. 第九节:基于MVC5+AutoFac+EF+Log4Net的基础结构搭建
  9. Cygwin中如何像在Ubuntu中一样安装软件
  10. nuttx linux 编译,linux下建立nuttx开发环境
  11. 连接数据库是显示无法连接到服务器,数据库无法连接到服务器怎么办(解决服务器连接故障的技巧)...
  12. 国内ERP技术公司综合
  13. 画出psnr_计算图像的峰值信噪比PSNR以及均方根误差MSE
  14. 怎么把度分秒化成小数_excel中批量将经纬度度分秒转换成十进制小数点的方法介绍...
  15. (四)keycloak 自定义用户(SPI)开发
  16. python 统计检验_常用统计检验的Python实现(附完整代码)
  17. [原创]火箭发动机设计---民科版
  18. 使用CDN加速的优点
  19. 利用qq账号查询所绑定的手机号码_怎么不用手机号注册新微信账号 免手机号申请方法分享...
  20. 网页版微信自动群发消息

热门文章

  1. H264和H265的学习笔记
  2. 上海户籍改革持居住证者工作数年可入沪
  3. SQLite数据库操作及ListView组件
  4. dhm-echarts图表架构与说明书
  5. imba 为什么那么快?
  6. cad自动进行桩位编号
  7. Linux命令之mv命令
  8. 专访李飞飞 :从清华附中高材生到阿里飞刀,一口井钻出「云原生」
  9. 一转身,已是舟山千重
  10. 【CCF】NOI笔试题库