题目

911. 在线选举
给你两个整数数组 persons 和 times 。在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的。

对于发生在时刻 t 的每个查询,需要找出在 t 时刻在选举中领先的候选人的编号。

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

实现 TopVotedCandidate 类:

TopVotedCandidate(int[] persons, int[] times) 使用 persons 和 times 数组初始化对象。
int q(int 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]解释:
TopVotedCandidate topVotedCandidate = new TopVotedCandidate([0, 1, 1, 0, 0, 1, 0], [0, 5, 10, 15, 20, 25, 30]);
topVotedCandidate.q(3); // 返回 0 ,在时刻 3 ,票数分布为 [0] ,编号为 0 的候选人领先。
topVotedCandidate.q(12); // 返回 1 ,在时刻 12 ,票数分布为 [0,1,1] ,编号为 1 的候选人领先。
topVotedCandidate.q(25); // 返回 1 ,在时刻 25 ,票数分布为 [0,1,1,0,0,1] ,编号为 1 的候选人领先。(在平局的情况下,1 是最近获得投票的候选人)。
topVotedCandidate.q(15); // 返回 0
topVotedCandidate.q(24); // 返回 0
topVotedCandidate.q(8); // 返回 1提示:
1 <= persons.length <= 5000
times.length == persons.length
0 <= persons[i] < persons.length
0 <= times[i] <= 109
times 是一个严格递增的有序数组
times[0] <= t <= 109
每个测试用例最多调用 104 次 q

解题思路

  • 刚看了一会发现没有读懂题目的意思,后来反复读题。
  • 读懂了题目,发现是一道阅读理解题。。。。。。就是题目给一个大的数组包含两个小的数组;第一个小的数组包含两个数组;一个是投票投给的人,另一个是时刻表;第二个小的数组是求对应数组里的时刻,票数最高的那个人。
  • 然后开始做题,首先需要初始化统计答案的字典和初始化票数最高的人。
  • 然后,遍历时刻表,如果该时刻有人的票数大于原来的票数最高的人(原来的票数最高的人默认为第一个获得票数的人),那么更新票数最高的人。
  • 最后返回票数最高的人就是那个时刻对应的答案。
  • 分析q()函数。因为q函数是返回在t时刻的候选人,那么我们直接在前面的每个时刻对应候选人的列表中插入位置就可以了。

Code

class TopVotedCandidate:def __init__(self, persons: List[int], times: List[int]):n = len(times)dic, people = defaultdict(int), persons[0]self.ans, self.times = [-1] * n, timesfor i in range(n):dic[persons[i]] += 1if dic[persons[i]] >= dic[people]:people = persons[i]self.ans[i] = peopledef q(self, t: int) -> int:return self.ans[bisect_right(self.times, t) - 1]# Your TopVotedCandidate object will be instantiated and called as such:
# obj = TopVotedCandidate(persons, times)
# param_1 = obj.q(t)

运行结果

LeetCode:911. 在线选举————中等相关推荐

  1. leetcode 911在线选举

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

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

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

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

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

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

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

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

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

  6. LeetCode hot-100 简单and中等难度,61-70.

    207. 课程表 难度中等520 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成 ...

  7. LeetCode hot-100 简单and中等难度,81-90.

    打家劫舍系列题 198. 打家劫舍 难度简单1005收藏分享切换为英文关注反馈 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防 ...

  8. LeetCode hot-100 简单and中等难度,71-80.

    279. 完全平方数 难度中等538收藏分享切换为英文关注反馈 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少 ...

  9. LeetCode hot-100 简单and中等难度,91-100.

    461. 汉明距离 难度简单307收藏分享切换为英文关注反馈 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ ...

最新文章

  1. phpinfo 信息利用
  2. 2021春季学期-创新设计与实践-Lesson1
  3. 有网友提问,关于本地XML转JSON的小工具
  4. 2d fft matlab,证明2D-FFT能够拆分成两个1D-FFT
  5. java for update 无效_java.sql.BatchUpdateException:调用中的无效参数
  6. 投放屏幕upnp协议探究抓包
  7. ionic4 引入外部字体ttf
  8. 【HISI系列】之IP/MAC地址配置
  9. 开发微信网页版登录(像segmentfault 网站那样登录)
  10. DNS寻址以及IP解析
  11. raid5用户mbr还是gpt_对硬盘进行分区时,GPT和MBR有什么区别?
  12. macOs Ventura 13自动开机关机设置教程(命令行)
  13. 针对源代码保密源代码安全管理产品选型建议
  14. 让Boo成为头等语言的新尝试
  15. Odoo16正式版于2022年9月12日发布
  16. linux can 总线socket接口测试使用
  17. 海思3516, 单摄像头接hdmi,并输出h.265文件
  18. vb6.0 生成exe被简称是木马_病毒分析|银行木马样本事件分析
  19. 11 万金油 String,为什么不好用了?
  20. 三国志战略版:Daniel_S7赤壁前瞻4_地图深度解析

热门文章

  1. 谭玉刚从零开始之超硬核制造操作系统
  2. 微信真的在后台频繁读取用户相册吗?
  3. android 录屏方案 VFR和CFR
  4. Images to Video(图片转视频软件)v4.0官方版
  5. 中国工业制造RFID市场竞争力排名分析与投资战略规划研究报告2022-2028年版
  6. ksy是谁_MOON,sky他们是谁啊?
  7. python--飞机大战(课程设计)
  8. 根据地址获取坐标经纬度
  9. 学生选课系统---数据库课程设计SQL Server
  10. 零基础学算法-P4-常用算法-排序