力扣 1854. 人口最多的年份

编程入门 行业动态 更新时间:2024-10-09 22:15:43

力扣 1854. 人口最多的<a href=https://www.elefans.com/category/jswz/34/1754811.html style=年份"/>

力扣 1854. 人口最多的年份

题目

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

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

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

示例

输入:logs = [[1993,1999],[2000,2010]]
输出:1993
解释:人口最多为 1 ,而 1993 是人口为 1 的最早年份。

输入:logs = [[1950,1961],[1960,1971],[1970,1981]]
输出:1960
解释:
人口最多为 2 ,分别出现在 1960 和 1970 。
其中最早年份是 1960 。

来源:力扣(LeetCode)
链接:
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1:差分法

使用一个数组diff记录每一年出生和死亡情况,出生 +1 ,死亡 -1。
遍历数组,求出前缀和,前缀和最大的年份即为人口数最多的年份。

Java实现
class Solution {public int maximumPopulation(int[][] logs) {int offset = 1950;int[] diff = new int[102];for (int[] var : logs) {diff[var[0] - offset]++;diff[var[1] - offset]--;}int cnt = 0, maxyear = 0, maxcnt = 0; for (int i = 0; i < diff.length; i++) {cnt += diff[i];if (cnt > maxcnt) {maxcnt = cnt;maxyear = i + offset;}}return maxyear;}
}

更多推荐

力扣 1854. 人口最多的年份

本文发布于:2024-02-27 19:40:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766180.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:年份   人口最多   力扣

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!