在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的。

现在,我们想要实现下面的查询函数: TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。

在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候选人将会获胜。

示例:

输入:[“TopVotedCandidate”,“q”,“q”,“q”,“q”,“q”,“q”], [[[0,1,1,0,0,1,0],[0,5,10,15,20,25,30]],[3],[12],[25],[15],[24],[8]]
输出:[null,0,1,1,0,0,1]
解释:
时间为 3,票数分布情况是 [0],编号为 0 的候选人领先。
时间为 12,票数分布情况是 [0,1,1],编号为 1 的候选人领先。
时间为 25,票数分布情况是 [0,1,1,0,0,1],编号为 1 的候选人领先(因为最近的投票结果是平局)。
在时间 15、24 和 8 处继续执行 3 个查询。

代码

   class TopVotedCandidate {int[] helper,time;int n;public TopVotedCandidate(int[] persons, int[] times) {int max=0,maxP=-1;n=times.length;Map<Integer,Integer> map=new HashMap<>();helper=new int[n];time=times;for (int i=0;i<n;i++)//计算每个时间节点的赢家{map.put(persons[i],map.getOrDefault(persons[i],0)+1);if(map.get(persons[i])>=max)//更换赢家{max=map.get(persons[i]);maxP=persons[i];}helper[i]=maxP;}}public int q(int t) {int l=0,r=n-1;while (l<=r)//二分查找目标时间节点{int mid=(r-l)/2+l;if(time[mid]==t)return helper[mid] ;else  if(time[mid]<t)l=mid+1;else  r=mid-1;}return helper[l-1];}}/*** Your TopVotedCandidate object will be instantiated and called as such:* TopVotedCandidate obj = new TopVotedCandidate(persons, times);* int param_1 = obj.q(t);*/

leetcode911. 在线选举(二分法)相关推荐

  1. LeetCode:911. 在线选举————中等

    题目 911. 在线选举 给你两个整数数组 persons 和 times .在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的. 对于发生在时刻 t 的每个查 ...

  2. leetcode 911在线选举

    911. 在线选举 难度中等109 给你两个整数数组 persons 和 times .在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的. 对于发生在时刻 t ...

  3. 2021.12.11LeetCode每日一题——在线选举

    目录 在线选举 描述 示例 提示 方法:二分查找 方法优化:数组 在线选举 描述 给你两个整数数组 persons 和 times . 在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 ...

  4. 【解题报告】Leecode911. 在线选举——Leecode每日一题系列

    题目链接:https://leetcode-cn.com/problems/online-election/ 题解汇总:https://zhanglong.blog.csdn.net/article/ ...

  5. LeetCode 911. 在线选举(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的. 现在,我们想要实现下面的查询函数: TopVotedCandida ...

  6. leetcode 911. Online Election | 911. 在线选举(加强堆 + 二分查找)

    题目 https://leetcode.com/problems/online-election/ 题解 我的解法是,用预计算(加强堆,O(nlogn)) + 二分查找(用的自带TreeMap,查找复 ...

  7. leetcode每日一题 911在线选举

    思路:主要是预处理,记录一个当前时刻最大值,遍历times数组,得到每个时刻的领先人,方法是记录一个当前的最大值,比较当前时刻得票人和之前领先人的得票数就行了,最后二分查找要求的时刻之前的那个投票时刻 ...

  8. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  9. LeetCode题解汇总

    题目 推荐指数 1. 两数之和 1 2. 两数相加 1 4. 寻找两个正序数组的中位数 2AAAA 6. Z 字形变换 1 7. 整数反转 2 8. 字符串转换整数 (atoi) 2AAA 9. 回文 ...

最新文章

  1. 2021年大数据Flink(一):乘风破浪的Flink-Flink概述
  2. dows 性能监控软件 Spotlight On Windows
  3. PHP学习笔记-PHP与Web页面的交互2
  4. webbrowser selstart selLength
  5. 公司技术部门内部的发展变化过程。
  6. Python的运算符与表达式
  7. 关于实现android状态栏沉浸的几种方法
  8. 机器学习在销售报价单的产品推荐场景中的作用
  9. 队列和消息队列_消息队列概述[幻灯片]
  10. Sliding Window 单调队列解决--经典滑动窗口问题--求窗口的最大值最小值
  11. 整合MVC实现文件上传
  12. abandon_mysql_使用Druid报错abandon connection, open stackTrace
  13. 8、javascript数组
  14. 反脆弱性:为什么工作越稳定,人生越脆弱?
  15. JS addEventListener()方法
  16. 音视频开发系列-H264编码原理
  17. 忍者必须死3系统拆解+测评
  18. HTMLCSS基础篇之十一:字体与颜色样式
  19. 多模态情感识别数据集和模型(下载地址+最新综述2021.8)
  20. AnyRTC将携互动直播连线2016杭州·云栖大会

热门文章

  1. 【计算机系统设计】实践笔记(2)插叙:综合与实现
  2. 【FPGA Verilog】实验二:key按键基础实验
  3. mysql创建存储时覆盖_总结到位的MySQL 的覆盖索引与回表
  4. POJ_3262 Protecting the Flowers 【贪心】
  5. 第一冲刺阶段博客检查
  6. 玩转CSS3(一)----CSS3实现页面布局
  7. ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)
  8. neroLinux3.x的序列号
  9. jQuery WeUI 上传
  10. JDK1.8中如何用ScriptEngine动态执行JS