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

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

在选举中,第 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 的候选人领先(因为最近的投票结果是平局)。
在时间 15248 处继续执行 3 个查询。提示:
1 <= persons.length = times.length <= 5000
0 <= persons[i] <= persons.length
times 是严格递增的数组,所有元素都在 [0, 10^9] 范围中。
每个测试用例最多调用 10000 次 TopVotedCandidate.q。
TopVotedCandidate.q(int t) 被调用时总是满足 t >= times[0]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/online-election
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 记录最大选票数量,获胜者
  • 按时间顺序记录下获胜者,然后二分查找小于等于 t 时刻的最后一个时间点,读取该时刻的获胜者
class TopVotedCandidate {vector<int> winner;vector<int> T;
public:TopVotedCandidate(vector<int>& persons, vector<int>& times) {int maxVotes = 0, winId = -1;unordered_map<int,int> votes;//人,得票数T = times;for(int i = 0; i < persons.size(); ++i) {votes[persons[i]]++;if(votes[persons[i]] >= maxVotes){winId = persons[i];maxVotes = votes[persons[i]];}winner.push_back(winId);}}int q(int t) {int l = 0, r = T.size()-1, mid;while(l <= r)//找小于等于我的最后一个时刻{mid = l +((r-l)>>1);if(T[mid] > t)r = mid-1;else{if(mid == T.size()-1 || T[mid+1] > t)return winner[mid];elsel = mid+1;}}return -1;}
};

532 ms 91.2 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定位position(前面布局无法实现

文档流 文档流&#xff0c;是指盒子按照html标签编写的顺序依次从上到下&#xff0c;从左到右排列&#xff0c;块元素占一行&#xff0c;行内元素在一行之内从左到右排列&#xff0c;先写的先排列&#xff0c;后写的排在后面&#xff0c;每个盒子都占据自己的位置。 定位&…

java 流程控制篇 2021/02/26持续更新中

1. 用户交互Scanner 1.1 简单的Scanner用法 首先&#xff0c;需要 import java.util.Scanner其次&#xff0c;需要创建一个 Scanner 类的对象&#xff0c; Scanner s new Scanner(System.in);通过调用Scanner对象的方法来完成&#xff0c; 一定要注意有开有关&#xff0c;最…

从Ubuntu12.04LTS到Foreda19再到Foreda8

装Ubuntu的初衷是以为它能识别我的PCI无线网卡&#xff0c;但装了两遍没有做到。 昨天在Ubuntu装jdk7&#xff0c;其过程与正常Linux安装jdk差别不小&#xff0c;有点背离的意思。另外VI的用法也和正常Unix/Linux不一样&#xff0c;有点别扭。 昨晚又下了一个Foreda19&#xff…

04.卷积神经网络 W1.卷积神经网络(作业:手动/TensorFlow 实现卷积神经网络)

文章目录作业1&#xff1a;实现卷积神经网络1. 导入一些包2. 模型框架3. 卷积神经网络3.1 Zero-Padding3.2 单步卷积3.3 卷积神经网络 - 前向传播4. 池化层5. 卷积神经网络 - 反向传播5.1 卷积层反向传播5.1.1 计算 dA5.1.2 计算 dW5.1.3 计算 db5.2 池化层 - 反向传播5.2.1 最…

tabel表格制作及操作

表格的基本用法 l table表示表格开始表格结束 l tr表示表格中的行标签一个表格中有多少行就应该书写多少对tr标签 l td表示表格中的单元格标签一行中有多少个单元格就应该书写多少对td标签 l表格中所有的内容都必须在放置在td标签里面 也就是说只有td标签才能存放内容 l t…

html的实战性介绍

Html 简介 超文本结构语言 html并非一种编程语言&#xff0c; 而是一种描述超文本文档的标记语言&#xff0c;用html编写的超文本文档成为html文档。 超文本文档指的是&#xff0c;可以加入图片、声音、动画、影视等内容&#xff0c;并可以利用超链接方便的从一个文件跳转到网…

前端:background背景图

background背景图 属性解释 background属性是css中应用比较多&#xff0c;且比较重要的一个属性&#xff0c;它是负责给盒子设置背景图片和背景颜色的&#xff0c;background是一个复合属性&#xff0c;它可以分解成如下几个设置项&#xff1a; background-color 设置背景颜色…

LeetCode 808. 分汤(动态规划)

文章目录1. 题目2. 解题1. 题目 有 A 和 B 两种类型的汤。一开始每种类型的汤有 N 毫升。有四种分配操作&#xff1a; 提供 100ml 的汤A 和 0ml 的汤B。提供 75ml 的汤A 和 25ml 的汤B。提供 50ml 的汤A 和 50ml 的汤B。提供 25ml 的汤A 和 75ml 的汤B。 当我们把汤分配给某…

JavaScript入门介绍 1 2021/02/27

一、JavaScript简介一 1.1 javascript 简介 JavaScript是Web页面中的一种脚本编程语言&#xff0c;可用于Web系统的客户端和服务器端编程前身叫做LiveScript&#xff0c;是Netscape公司开发的脚本语言。在Sun公司推出Java语言后&#xff0c; Netscape公司和Sun公司于1995年一…

css权重值

CSS权重指的是样式的优先级&#xff0c;有两条或多条样式作用于一个元素&#xff0c;权重高的那条样式对元素起作用,权重相同的&#xff0c;后写的样式会覆盖前面写的样式。 权重的等级 可以把样式的应用方式分为几个等级&#xff0c;按照等级来计算权重 !important&#xf…

LeetCode 848. 字母移位(前缀和+取模)

文章目录1. 题目2. 解题1. 题目 有一个由小写字母组成的字符串 S&#xff0c;和一个整数数组 shifts。 我们将字母表中的下一个字母称为原字母的 移位&#xff08;由于字母表是环绕的&#xff0c; ‘z’ 将会变成 ‘a’&#xff09;。 例如&#xff0c;shift(a) b&#xff…

jsp:setProperty

类声明&#xff1a; package test; public class Student { private int age; public int getAge() { return age; } public void setAge(int age) { this.age age; } } jsp代码&#xff1a; <jsp:useBean id"student"…

第一章、OS引论1

1.1 操作系统的目标和作用 1.1.1 操作系统的目标 计算机上安装操作系统&#xff0c;主要目标是&#xff1a;方便性、有效性、可扩充性和开放性。 方便性&#xff1a;方便用户&#xff0c;使计算机变得易学易用有效性&#xff1a;提高系统资源(资源指CPU(处理机),存储器,文件(…

常用图片格式介绍(了解

常用图片格式 图片是网页制作中很重要的素材&#xff0c;图片有不同的格式&#xff0c;每种格式都有自己的特性&#xff0c;了解这些特效&#xff0c;可以方便我们在制作网页时选取适合的图片格式&#xff0c;图片格式及特性如下&#xff1a; 1、psd photoshop的专用格式。 优点…

LeetCode 858. 镜面反射(最小公倍数/最大公约数)

文章目录1. 题目2. 解题1. 题目 有一个特殊的正方形房间&#xff0c;每面墙上都有一面镜子。 除西南角以外&#xff0c;每个角落都放有一个接受器&#xff0c;编号为 0&#xff0c; 1&#xff0c;以及 2。 正方形房间的墙壁长度为 p&#xff0c;一束激光从西南角射出&#xf…

SharePoint 2013的100个新功能之搜索(一)

一&#xff1a;新的搜索架构 SharePoint 2013中将最好的两个搜索引擎“SharePoint搜索”和“SharePoint FAST搜索服务”整合到了一个搜索引擎&#xff0c;提供更大的冗余和更好的扩展性。更多信息 二:持续的爬网 一个新的爬网选项“持续爬网”被引入到了搜索的爬网计划表中&…

Ubuntu从零安装 Hadoop And Spark

安装 linux 以Ubuntu为例 选择镜像&#xff0c;虚拟机安装 虚拟机下&#xff0c;直接安装镜像即可&#xff0c;选择好自己的配置&#xff0c;一定要注意路径名选好&#xff0c;而且和你虚拟机的名称匹配&#xff0c;这里我的镜像是 ubuntu-20.04.2.0-desktop-amd64.iso 切换…

04.卷积神经网络 W2.深度卷积网络:实例探究

文章目录1. 为什么要进行实例探究2. 经典网络3. 残差网络 ResNets4. 残差网络为什么有用5. 网络中的网络 以及 11 卷积6. 谷歌 Inception 网络简介7. Inception 网络8. 使用开源的实现方案9. 迁移学习10. 数据增强 Data augmentation11. 计算机视觉现状作业参考&#xff1a; 吴…

transition动画与transform变换(了解

1、transition-property 设置过渡的属性&#xff0c;比如&#xff1a;width height background-color2、transition-duration 设置过渡的时间&#xff0c;比如&#xff1a;1s 500ms3、transition-timing-function 设置过渡的运动方式&#xff0c;常用有 linear(匀速)|ease(缓冲…

mysql游标循环的使用

CREATE PROCEDURE test.new_procedure () BEGIN -- 需要定义接收游标数据的变量 DECLARE a CHAR(16);-- 游标DECLARE cur CURSOR FOR SELECT i FROM test.t;-- 遍历数据结束标志DECLARE done INT DEFAULT FALSE;-- 将结束标志绑定到游标DECLARE CONTINUE HANDLER FOR NOT FOUND…