給定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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。