给定N我的的出生年份和死亡年份,第i
我的的出生年份为birth[i]
,死亡年份为death[i]
,实现一个方法以计算生存人数最多的年份。php
你能够假设全部人都出生于1900年至2000年(含1900和2000)之间。若是一我的在某一年的任意时期都处于生存状态,那么他们应该被归入那一年的统计中。例如,生于1908年、死于1909年的人应当被列入1908年和1909年的计数。golang
若是有多个年份生存人数相同且均为最大值,输出其中最小的年份。算法
示例:数组
输入:
birth = {1900, 1901, 1950}
death = {1948, 1951, 2000}
输出: 1901
提示:微信
0 < birth.length == death.length <= 10000
架构birth[i] <= death[i]
app
解题思路
ui
1,这个题目和并行任务数是同样的
spa
2,出生+1,死亡-1.net
3,关键是继承上一年的sum[i]+=sum[i-1]
4,注意有个坑,1909年死的人应该在1909年还算存活,1910年不算了
代码实现
func maxAliveYear(birth []int, death []int) int { sum:=make([]int,102) for i:=0;i<len(birth);i++{ sum[birth[i]-1900]++ } for i:=0;i<len(death);i++{ sum[death[i]-1899]-- } max:=sum[0] maxIndex:=0 for i:=1;i<102;i++{ sum[i]+=sum[i-1] if sum[i]>max{ max=sum[i] maxIndex=i } } return 1900+maxIndex //1909年死的人应该在1909年还算存活,1910年不算了,,没理解好,因此应该是102大小的数组}
本文分享自微信公众号 - golang算法架构leetcode技术php(golangLeetcode)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。