一、题目描述
题目链接:https://leetcode-cn.com/problems/living-people-lcci/
二、题目分析
因为年份是有限的,所以我们可以计算每个年份新增了多少人,减少了多少人,计算出每一年人数的变化情况,然后从1900开始遍历一遍,就可以得到每一年的人数,由此可以计算最大人值。
三、代码
public int maxAliveYear(int[] birth, int[] death) {
int[] dp = new int[102];
for (int i = 0; i < birth.length; ++i) {
dp[birth[i] - 1900] += 1;
// 这里要注意,当年死的人还算在当年的人数,所以是下一年少一人
dp[death[i] - 1900 + 1] -= 1;
}
int start = 0;
int max = 0;
int maxYear = 0;
for (int i = 0; i < 102; ++i) {
start += dp[i];
if (start > max) {
max = start;
maxYear = i;
}
}
return maxYear + 1900;
}