LeetCode 1854.人口最多的年份 Maximum Population Year(Java)
Posted 爱若信若盼若
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1854.人口最多的年份 Maximum Population Year(Java)相关的知识,希望对你有一定的参考价值。
##1854.人口最多的年份Maximum Population Year(Easy)
##Array##
暴力枚举
枚举每一年year
包含的人口,过程为遍历整个数组logs
,对某个人log
,若log[0] <= year && log[1] - 1 >= year
则判断这个人属于该年包含的人口
时间复杂度: O ( n ∗ m ) O(n * m) O(n∗m),n为年龄跨度,m为人口总数
差分法
考虑一般情况,每年都有人出生的去世
diff[i] = m - n
表示第i
年有m
个人出生,n
个人去世
最后遍历diff
数组,diff
的前i
项和即为第i
年包含的人口数
时间复杂度: O ( m a x ( n , m ) ) O(max(n,m)) O(max(n,m))
class Solution {
public int maximumPopulation(int[][] logs) {
int[] diff = new int[110];
for (int[] log : logs) { // 遍历每一个人的出生年份和死亡年份
diff[log[0] - 1950] ++; // 人口增加
diff[log[1] - 1950] --; // 人口减少
}
int cnt = 0, max = 0, res = 1950;
for (int i = 0; i <= 100; i ++) {
cnt += diff[i]; // 计算第i年包含的人口数
if (cnt > max) { // 存活人数最多的年份
max = cnt;
res = i + 1950;
}
}
return res;
}
}
以上是关于LeetCode 1854.人口最多的年份 Maximum Population Year(Java)的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 1854. Maximum Population Year
LeetCode笔记:Weekly Contest 240 比赛记录