leetcode911. 在线选举(二分法)
在选举中,第 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. 在线选举(二分法)相关推荐
- LeetCode:911. 在线选举————中等
题目 911. 在线选举 给你两个整数数组 persons 和 times .在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的. 对于发生在时刻 t 的每个查 ...
- leetcode 911在线选举
911. 在线选举 难度中等109 给你两个整数数组 persons 和 times .在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的. 对于发生在时刻 t ...
- 2021.12.11LeetCode每日一题——在线选举
目录 在线选举 描述 示例 提示 方法:二分查找 方法优化:数组 在线选举 描述 给你两个整数数组 persons 和 times . 在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 ...
- 【解题报告】Leecode911. 在线选举——Leecode每日一题系列
题目链接:https://leetcode-cn.com/problems/online-election/ 题解汇总:https://zhanglong.blog.csdn.net/article/ ...
- LeetCode 911. 在线选举(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的. 现在,我们想要实现下面的查询函数: TopVotedCandida ...
- leetcode 911. Online Election | 911. 在线选举(加强堆 + 二分查找)
题目 https://leetcode.com/problems/online-election/ 题解 我的解法是,用预计算(加强堆,O(nlogn)) + 二分查找(用的自带TreeMap,查找复 ...
- leetcode每日一题 911在线选举
思路:主要是预处理,记录一个当前时刻最大值,遍历times数组,得到每个时刻的领先人,方法是记录一个当前的最大值,比较当前时刻得票人和之前领先人的得票数就行了,最后二分查找要求的时刻之前的那个投票时刻 ...
- 如何学好C语言--你的学渣朋友告诉你
光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...
- LeetCode题解汇总
题目 推荐指数 1. 两数之和 1 2. 两数相加 1 4. 寻找两个正序数组的中位数 2AAAA 6. Z 字形变换 1 7. 整数反转 2 8. 字符串转换整数 (atoi) 2AAA 9. 回文 ...
最新文章
- 2021年大数据Flink(一):乘风破浪的Flink-Flink概述
- dows 性能监控软件 Spotlight On Windows
- PHP学习笔记-PHP与Web页面的交互2
- webbrowser selstart selLength
- 公司技术部门内部的发展变化过程。
- Python的运算符与表达式
- 关于实现android状态栏沉浸的几种方法
- 机器学习在销售报价单的产品推荐场景中的作用
- 队列和消息队列_消息队列概述[幻灯片]
- Sliding Window 单调队列解决--经典滑动窗口问题--求窗口的最大值最小值
- 整合MVC实现文件上传
- abandon_mysql_使用Druid报错abandon connection, open stackTrace
- 8、javascript数组
- 反脆弱性:为什么工作越稳定,人生越脆弱?
- JS addEventListener()方法
- 音视频开发系列-H264编码原理
- 忍者必须死3系统拆解+测评
- HTMLCSS基础篇之十一:字体与颜色样式
- 多模态情感识别数据集和模型(下载地址+最新综述2021.8)
- AnyRTC将携互动直播连线2016杭州·云栖大会
热门文章
- 【计算机系统设计】实践笔记(2)插叙:综合与实现
- 【FPGA Verilog】实验二:key按键基础实验
- mysql创建存储时覆盖_总结到位的MySQL 的覆盖索引与回表
- POJ_3262 Protecting the Flowers 【贪心】
- 第一冲刺阶段博客检查
- 玩转CSS3(一)----CSS3实现页面布局
- ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)
- neroLinux3.x的序列号
- jQuery WeUI 上传
- JDK1.8中如何用ScriptEngine动态执行JS