二分搜索(十一)911. 在线选举
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#include vector #include unordered_map #include algorithm using namespace std; class TopVotedCandidate { private: vectorint times; // 存时间点 vectorint winners; // winners[i] 代表在 times[i] 这个时刻的赢家 public: TopVotedCandidate(vectorint persons, vectorint times) { this-times times; unordered_mapint, int voteCounts; // 记录每个人的票数 int topCandidate -1; // 当前赢家 int topVotes 0; // 当前最高票数 // 1. 预处理遍历每一张选票 for (int i 0; i persons.size(); i) { int p persons[i]; voteCounts[p]; // 给他投一票 // 2. 更新赢家逻辑 // 题目规定票数相等时最近获得选票的人获胜。 // 因为我们是按时间顺序遍历的所以只要当前这个人的票数 当前最高票数 // 他就自动成为“最新的”赢家 if (voteCounts[p] topVotes) { topVotes voteCounts[p]; topCandidate p; } // 3. 记录这个时刻的赢家 winners.push_back(topCandidate); } } int q(int t) { // 4. 二分查找 // 我们要找 t 的最后一个时间点 // 使用 upper_bound 找到第一个 t 的位置 auto it upper_bound(times.begin(), times.end(), t); // 然后回退一步就是 t 的位置 int index prev(it)-times.begin(); // int index distance(times.begin(), it) - 1; return winners[index]; } }; /** * Your TopVotedCandidate object will be instantiated and called as such: * TopVotedCandidate* obj new TopVotedCandidate(persons, times); * int param_1 obj-q(t); */

相关新闻

大电流PCB布局布线:线宽计算完整示例

大电流PCB布局布线:线宽计算完整示例

以下是对您提供的技术博文进行 深度润色与结构重构后的专业级技术文章 。全文严格遵循您的全部优化要求: ✅ 彻底去除AI痕迹,语言自然如资深工程师现场讲解; ✅ 摒弃所有模板化标题(“引言”“总结”“核心特性”等&#xff0…

2026/7/3 19:11:06 阅读更多 →
基于光耦隔离的有源蜂鸣器驱动电路设计实例

基于光耦隔离的有源蜂鸣器驱动电路设计实例

以下是对您提供的技术博文进行 深度润色与结构重构后的专业级技术文章 。全文已彻底去除AI生成痕迹,采用真实工程师口吻撰写,逻辑层层递进、语言精炼有力,兼具教学性、实战性与工程思辨性。所有技术细节均严格基于原文内容展开,…

2026/7/5 13:45:38 阅读更多 →
Open-AutoGLM社交场景:AI帮你回复消息不尴尬

Open-AutoGLM社交场景:AI帮你回复消息不尴尬

Open-AutoGLM社交场景:AI帮你回复消息不尴尬 你有没有过这样的时刻——微信弹出一条重要消息,你正开会没法细看;小红书有人私信问产品细节,你手头没资料不敢乱回;抖音粉丝留言求教程,你明明想认真答&#…

2026/7/3 19:11:10 阅读更多 →

最新新闻

Obsidian:英雄联盟Wad文件编辑的终极免费工具

Obsidian:英雄联盟Wad文件编辑的终极免费工具

Obsidian:英雄联盟Wad文件编辑的终极免费工具 【免费下载链接】Obsidian Wad archive editor for League of Legends 项目地址: https://gitcode.com/gh_mirrors/obsidian2/Obsidian 如果你正在寻找一款英雄联盟Wad编辑器来探索游戏资源,那么Obsi…

2026/7/8 5:24:40 阅读更多 →
张家口本地业主看过来!2026年07月顺辉陶瓷总代理解你瓷砖选购疑问

张家口本地业主看过来!2026年07月顺辉陶瓷总代理解你瓷砖选购疑问

本地业主瓷砖踩坑痛点在张家口,不少业主在瓷砖选购和装修过程中遭遇诸多难题。比如,单独购买瓷砖时,多层中间商抬价,市场上还混杂着尾货、仿品,没有正规质保,一旦出现破损、色差等问题,维权十分…

2026/7/8 5:24:40 阅读更多 →
Prometheus 基于文件的服务发现完全指南:从原理到实战

Prometheus 基于文件的服务发现完全指南:从原理到实战

前言在云原生与微服务架构盛行的今天,服务的动态伸缩、弹性部署已成为基础设施的核心特征。面对频繁变化的实例 IP 和端口,传统静态配置的监控方式显得力不从心。Prometheus 基于文件的服务发现(File-based Service Discovery) 正…

2026/7/8 5:22:39 阅读更多 →
2026保山黄金回收白银回收铂金回收中检持证鉴定师铂金银饰高价回收门店联系方式推荐

2026保山黄金回收白银回收铂金回收中检持证鉴定师铂金银饰高价回收门店联系方式推荐

2026保山黄金白银铂金回收实测榜单|公安备案中检认证无折旧费门店推荐 保山本地贵金属回收店铺遍地丛生,行业套路层出不穷,不少市民变现遭遇虚高报价、克扣损耗、未经同意熔金压价等问题。为帮助本地居民规避消费陷阱,小编实地走遍…

2026/7/8 5:18:39 阅读更多 →
2026知识管理系统十大必备功能解析|Baklib

2026知识管理系统十大必备功能解析|Baklib

在当今竞争激烈的市场中,企业的核心竞争力已不再局限于顶尖人才、创新产品或品牌营销。根据德勤数字(Deloitte Digital)的数据,高达88%的企业已将客户体验(CX)视为首要战略重心。根本原因在于,客…

2026/7/8 5:16:38 阅读更多 →
猫抓浏览器资源嗅探扩展:架构解析与高级配置实战指南

猫抓浏览器资源嗅探扩展:架构解析与高级配置实战指南

猫抓浏览器资源嗅探扩展:架构解析与高级配置实战指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch&#…

2026/7/8 5:14:38 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻