給定n個人的出生年份和死亡年份,第i個人的出生年份為birth[i],死亡年份為death[i],實現乙個方法以計算生存人數最多的年份。
你可以假設所有人都出生於2023年至2023年(含1900和2000)之間。如果乙個人在某一年的任意時期都處於生存狀態,那麼他們應該被納入那一年的統計中。例如,生於2023年、死於2023年的人應當被列入2023年和2023年的計數。
如果有多個年份生存人數相同且均為最大值,輸出其中最小的年份。
做5412. 在既定時間做作業的學生人數時想到的……
class
solution
:def
maxaliveyear
(self, birth: list[
int]
, death: list[
int])-
>
int:
defhe
(y):
return
sum(
1for i,j in
zip(birth,death)
if i<=y<=j)
max=
0 year=
0for i in
range
(min
(birth)
,max
(death)+1
):k=he(i)
if k>max:
max=k
year=i
return year
執行用時 :784 ms, 在所有 python3 提交中擊敗了12.61%的使用者記憶體消耗 :14.3 mb, 在所有 python3 提交中擊敗了100.00%的使用者
class
solution
:def
maxaliveyear
(self, birth: list[
int]
, death: list[
int])-
>
int:
dp=[0
]*101for i,j in
zip(birth,death)
:for k in
range
(i-1900
,j-1900+1
):dp[k]+=1
return dp.index(
max(dp))+
1900
執行用時 :312 ms, 在所有 python3 提交中擊敗了43.70%的使用者用兩個陣列儲存從2023年到2023年間每年的出生人口和死亡人口,最大生存人數就是總的生**口-總的死亡人口,唯一需要注意的是 應該是第i年的總出生人口-第i-1年的死亡人口,因為當年死亡的人仍算存活。記憶體消耗 :14.6 mb, 在所有 python3 提交中擊敗了100.00%的使用者
class
solution
:def
maxaliveyear
(self, birth: list[
int]
, death: list[
int])-
>
int:
dic = collections.defaultdict(
int)
for c in birth:
dic[c]+=1
for c in death:
dic[c+1]
-=1maxn =
0 cur =
0 res =-1
for i in
range
(1900
,2001):
cur+=dic[i]
if cur>maxn:
res=i
maxn = cur
return res
執行用時 :96 ms, 在所有 python3 提交中擊敗了67.59%的使用者記憶體消耗 :14.5 mb, 在所有 python3 提交中擊敗了100.00%的使用者
面試題 16 10 生存人數
給定n個人的出生年份和死亡年份,第i個人的出生年份為birth i 死亡年份為death i 實現乙個方法以計算生存人數最多的年份。你可以假設所有人都出生於1900年至2000年 含1900和2000 之間。如果乙個人在某一年的任意時期都處於生存狀態,那麼他們應該被納入那一年的統計中。例如,生於19...
力扣 289 生命遊戲
給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞都具有乙個初始狀態 1 即為活細胞 live 或 0 即為死細胞 dead 每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞...
力扣289 生命遊戲
這道題還是比較簡單的,只要針對陣列進行正常遍歷即可。給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞都具有乙個初始狀態 1 即為活細胞 live 或 0 即為死細胞 dead 每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位...