1854. 人口最多的年份

1854. 人口最多的年份

给你一个二维整数数组 logs ,其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。

年份 x 的 人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足:x 在闭区间 [birthi, deathi - 1] 内。注意,人不应当计入他们死亡当年的人口中。

返回 人口最多 且 最早 的年份。

示例 1:输入:logs = [[1993,1999],[2000,2010]]
输出:1993
解释:人口最多为 1 ,而 1993 是人口为 1 的最早年份。示例 2:输入:logs = [[1950,1961],[1960,1971],[1970,1981]]
输出:1960
解释: 
人口最多为 2 ,分别出现在 1960 和 1970 。
其中最早年份是 1960 。

提示:

  • 1 <= logs.length <= 100
  • 1950 <= birthi < deathi <= 2050

解题思路

使用小根堆维护死亡时间的先后次序,再对出生时间进行从小到大的排序,从小到大遍历出生时间,每当遍历到一个时间,就说明在这个时间点上有人出生,因此我们需要把当前的人数加一,当我们发现小根堆里面出现了比当前出生时间还要小的元素,说明了在该人出生之前有人死亡,因此我们需要将这部分人移除出小根堆,并且将当前存活的人数减去。每次遍历出生时间的时候,就统计一遍当前存活的人数,如果当前的人数是目前的最大值,则将人口最多的年份置为遍历到的出生年份。

代码

class Solution {
public:int maximumPopulation(vector<vector<int>> &logs) {int m(0),res=-1,idx=-1;priority_queue<int,vector<int>,greater<int>> pq;for (auto l:logs)pq.push(l[1]);sort(logs.begin(),logs.end());for(auto l:logs){while (l[0]>=pq.top()){pq.pop();m--;}    m++;if (m>res){res=m;idx=l[0];}}return idx;}
};

解题思路

使用差分数组的思路,因为这题的时间跨度比较小,只有100个年份,因此我们可以记录每个年份增加了人数,哪个年份减少了人数,最后通过遍历所有年份人数的增减,去确定人口最多 且 最早 的年份

代码

class Solution {
public:int maximumPopulation(vector<vector<int>> &logs) {int m(0),res=-1,idx=-1;vector<int> v(101);for (auto l:logs){v[l[0]-1950]++;v[l[1]-1950]--;}for (int i = 0; i < 101; ++i) {m+=v[i];if (m>res){res=m;idx=i+1950;}}return idx;}
};

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

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

相关文章

snake4444勒索病毒成功处理教程方法工具达康解密金蝶/用友数据库sql后缀snake4444...

*snake4444勒索病毒成功处理教程方法 案例&#xff1a;笔者负责一个政务系统的第三方公司的运维&#xff0c;上班后发现服务器的所有文件都打不开了&#xff0c;而且每个文件后面都有一个snake4444的后缀&#xff0c;通过网络我了解到这是一种勒索病毒。因为各个文件不能正常打…

有史以来最漂亮的游戏机

The recent reveal of the PlayStation 5’s design has divided the gaming world. There are those who appreciate its bold, daring industrial design and those who would have preferred something a little less outlandish; perhaps a little more traditional.吨 他最…

springboot-添加拦截器

在我们日常开发的过程中&#xff0c;经常会遇到这一类问题&#xff0c;要求需要用户登录以后才能够访问其他的内容&#xff0c;否则不行&#xff0c;那么解决这一问题最好的办法就是运用拦截器&#xff0c;拦截器可以和多种处理请求的web框架结合&#xff0c;今天所讲的就是与s…

1945. 字符串转化后的各位数字之和

1945. 字符串转化后的各位数字之和 给你一个由小写字母组成的字符串 s &#xff0c;以及一个整数 k 。 首先&#xff0c;用字母在字母表中的位置替换该字母&#xff0c;将 s 转化 为一个整数&#xff08;也就是&#xff0c;‘a’ 用 1 替换&#xff0c;‘b’ 用 2 替换&#…

墨刀原型制作 位置选择_原型制作不再是可选的

墨刀原型制作 位置选择The ‘role’ of a designer has been a topic of discussion several many years now. In the past decade, the role of a Designer got split into several different roles like — Graphic Designer, User Experience Designer, Interaction Designe…

eclipse maven 构建简单springmvc项目

环境&#xff1a;eclipse Version: Oxygen.3a Release (4.7.3a) 创建maven Project项目&#xff0c;目录结构 修改工程的相关编译属性 修改pop.xml&#xff0c;引入springmvc相关包 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.…

1859. 将句子排序

1859. 将句子排序 一个 句子 指的是一个序列的单词用单个空格连接起来&#xff0c;且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。 我们可以给一个句子添加 从 1 开始的单词位置索引 &#xff0c;并且将句子中所有单词 打乱顺序 。 比方说&#xff0c;句子…

医动力Android基于CC组件化框架的探索与实践

为什么要组件化? 医动力App作为公司的核心产品已经有多年历史了,随着版本的不断迭代,功能越来越多,代码量越来越大,不可避免的会产生一下问题: 业务越来越复杂&#xff0c;维护成本高;业务耦合度高&#xff0c;代码越来越臃肿&#xff0c;团队内部多人协作开发困难;编译时间长…

使用协同过滤推荐电影

ALSO, ARE RECOMMENDER SYSTEMS INFLUENCING OUR TASTE??此外&#xff0c;推荐系统是否影响我们的口味&#xff1f; An excerpt on creating a movie recommender system similar to the OTT platforms.有关创建类似于OTT平台的电影推荐系统的摘录。 INTRODUCTION介绍 For…

423. 从英文中重建数字

423. 从英文中重建数字 给你一个字符串 s &#xff0c;其中包含字母顺序打乱的用英文单词表示的若干数字&#xff08;0-9&#xff09;。按 升序 返回原始的数字。 例 1&#xff1a;输入&#xff1a;s "owoztneoer" 输出&#xff1a;"012"示例 2&#xf…

锦欣生殖获战略投资,华平、信银领投,红杉、药明康德跟投

9月16日消息&#xff0c;锦欣生殖近日宣布已完成新一轮的战略投资&#xff0c;本轮融资由原战略股东华平投资及新引入的中信银行旗下信银投资领投&#xff0c;红杉资本中国基金、药明康德等跟投。完成本轮融资后&#xff0c;华平投资及信银投资分别成为锦欣生殖的第二及第三大股…

数据暑假实习面试_面试数据科学实习如何准备

数据暑假实习面试Unfortunately, on this occasion, your application was not successful, and we have appointed an applicant who…不幸的是&#xff0c;这一次&#xff0c;您的申请没有成功&#xff0c;我们已经任命了一位符合以下条件的申请人&#xff1a; Sounds famili…

两道简单的入门题

1&#xff09;  for循环求100以内奇数和 1 #include<stdio.h> 2 int main(){ 3 int ans0;//定义一个答案变量存储答案 4 for(int i1;i<100;i)//用for从1循环到100&#xff0c;如果i%2&#xff01;0&#xff08;%是一种取余运算&#xff09; 5 if(…

1716. 计算力扣银行的钱

1716. 计算力扣银行的钱 Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。 最开始&#xff0c;他在周一的时候存入 1 块钱。从周二到周日&#xff0c;他每天都比前一天多存入 1 块钱。在接下来每一个周一&#xff0c;他都会比 前一个周一 多存入 1 块钱。 给你 …

谷歌 colab_如何在Google Colab上使用熊猫分析

谷歌 colabRecently, pandas have come up with an amazing open-source library called pandas-profiling. Generally, EDA starts by df.describe(), df.info() and etc which to be done separately. Pandas_profiling extends the general data frame report using a singl…

【题解】HAOI2007分割矩阵

水题盛宴啦啦啦……做起来真的极其舒服&#xff0c;比某些毒瘤题好太多了…… 数据范围极小 --> 状压 / 搜索 / 高维度dp&#xff1b;观察要求的均方差&#xff0c;开始考虑是不是能够换一下式子。我们用\(a_{x}\)来表示第 \(x\) 个矩阵的总值&#xff0c;则式子为&#xff…

Java之生成Pdf并对Pdf内容操作

虽说网上有很多可以在线导出Pdf或者word或者转成png等格式的工具&#xff0c;但是我觉得还是得了解知道是怎么实现的。一来&#xff0c;在线免费转换工具&#xff0c;是有容量限制的&#xff0c;达到一定的容量时&#xff0c;是不能成功导出的;二来&#xff0c;业务需求&#x…

边际概率条件概率_数据科学家解释的边际联合和条件概率

边际概率条件概率Probability plays a very important role in Data Science, as Data Scientist regularly attempt to draw statistical inferences that could be used to predict data or analyse data better.P robability起着数据科学非常重要的作用&#xff0c;为数据科…

1822. 数组元素积的符号

1822. 数组元素积的符号 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。 如果 x 是负数&#xff0c;返回 -1 。 如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的…

java并发编程实战:第十四章----构建自定义的同步工具

一、状态依赖性管理 对于单线程程序&#xff0c;某个条件为假&#xff0c;那么这个条件将永远无法成真在并发程序中&#xff0c;基于状态的条件可能会由于其他线程的操作而改变1 可阻塞的状态依赖操作的结构2 3 acquire lock on object state4 while (precondition does not ho…