leetcode在力扣 App 中打开
调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

给定 N 个人的出生年份和死亡年份,第 i 个人的出生年份为 birth[i],死亡年份为 death[i],实现一个方法以计算生存人数最多的年份。

你可以假设所有人都出生于 1900 年至 2000 年(含 1900 和 2000 )之间。如果一个人在某一年的任意时期处于生存状态,那么他应该被纳入那一年的统计中。例如,生于 1908 年、死于 1909 年的人应当被列入 1908 年和 1909 年的计数。

如果有多个年份生存人数相同且均为最大值,输出其中最小的年份。

 

示例:

输入:
birth = [1900, 1901, 1950]
death = [1948, 1951, 2000]
输出: 1901

 

提示:

  • 0 < birth.length == death.length <= 10000
  • birth[i] <= death[i]
通过次数
19.7K
提交次数
29.7K
通过率
66.3%

相关标签

相关企业

提示 1
方案 1:你能计算出每年有多少人活着吗?

提示 2
方案1:用散列表或数组试试,将出生年份映射到该年还有多少人活着。

提示 3
解法2:如果对年份排序会如何?你会根据什么排序?

提示 4
解法2:你真的有必要匹配出生年份和死亡年份吗?当一个特定的人死了,会有什么关系,或者你只是需要一份死亡年份的清单?

提示 5
解法2:观察到人是“可替代的”,不管谁出生,何时死亡。你需要的只是一份出生年份和死亡年份的列表。这可能会使你对人员列表的排序变得更加容易。

提示 6
解法2:尝试创建一份排序的出生列表和一份排序的死亡列表。通过遍历两个列表,你能追踪任意时间活着的人的数量吗?

提示 7
每个出生增加一个人,每个死亡移除一个人。尝试编写一份人员列表(出生年份和死亡年份)示例,然后将其重新格式化为每年的列表,出生时加1,死亡时减1。

提示 8
解法3:如果你创建了一个年份数组并保存每个年份的人口变化会如何?你能找到人口最多的那一年吗?

提示 9
解法3:注意这个问题中的细节。你的算法/代码是否考虑一个在出生的同一年去世的人?这个人应该被计算为人口总数中的一人。

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
birth =
[1900,1901,1950]
death =
[1948,1951,2000]
Source