題目描述:假設有打亂順序的一群人站成乙個佇列。 每個人由乙個整數對(h, k)表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。 編寫乙個演算法來重建這個佇列。
解題思路:先按照高度從高到低排序,相同的高度在按照k從低到高排序,然後依次將他們放在輸出佇列中與k
值對應相等的索引位置上,因為矮個子的人對高個子來說是看不見的,所以後放置矮個子不會影響到高個子前面比他高的人的個數,**如下:
class
solution
:def
reconstructqueue
(self, people: list[list[
int]])
-> list[list[
int]]:
people.sort(key=
lambda x:
(-x[0]
, x[1]
))res =
for p in people:
res.insert(p[1]
, p)
return res
406 根據身高重建佇列
假設有打亂順序的一群人站成乙個佇列。每個人由乙個整數對 h,k 表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。編寫乙個演算法來重建這個佇列。注意 總人數少於1100人。示例輸入 7,0 4,4 7,1 5,0 6,1 5,2 輸出 5,0 7,0 5,2 6,1 4,4 7...
406 根據身高重建佇列
假設有打亂順序的一群人站成乙個佇列。每個人由乙個整數對 h,k 表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。編寫乙個演算法來重建這個佇列。注意 總人數少於1100人。示例輸入 7,0 4,4 7,1 5,0 6,1 5,2 輸出 5,0 7,0 5,2 6,1 4,4 7...
406 根據身高重建佇列
假設有打亂順序的一群人站成乙個佇列。每個人由乙個整數對 h,k 表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。編寫乙個演算法來重建這個佇列。注意 總人數少於1100人。示例輸入 7,0 4,4 7,1 5,0 6,1 5,2 輸出 5,0 7,0 5,2 6,1 4,4 7...