golang刷leetcode 技巧(40)生存人數

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

相關文章
相關標籤/搜索