1854. 人口最多的年份
https://leetcode-cn.com/problems/maximum-population-year/
差分法
其实不用考虑[1993,1999]这种区间段,那样太复杂,只需要考虑两个端点,1993年人口+1,1999年人口-1即可
用delta数组维护每一年的人口变化量,然后从前往后一次遍历
class Solution:
def maximumPopulation(self, logs: List[List[int]]) -> int:
delta = [0]*101 #第0号表示1950年
offset = 1950 #偏移量
for b,d in logs:
delta[b-offset] += 1
delta[d-offset] -= 1
maxp = 0 #人口峰值
res = 2050
cur = 0 #统计当前人口
#从前往后遍历
for i in range(101):
cur += delta[i]
#因为是从前往后,所以不用再考虑人口相同时取最早年份,因为相同时不更新
if cur > maxp:
maxp = cur
res = i
# 记得加上偏移
return res + offset
最后更新于