參考:
sort自定義函式:如果想讓元素按照公升序排序就返回p1p2
vectorint,
int>>
reconstructqueue
(vectorint,
int>>
& people)
;//按照第一位降序,第二位公升序排序
sort
(people.
begin()
, people.
end(
), comp)
; vectorint,
int>> res;
for(
auto
& p : people)
res.
insert
(res.
begin()
+ p.second, p)
;//依次插入排序好的元素
return res;
}
個人理解:
乙個人的身高為h,前面大於等於他的人數為k
考慮新插入乙個人(5,3),要想讓他偏移3個位置插入佇列,那麼必須已經有的佇列中所有元素的身高都比他大(因為如果佇列中有比他小的身高,那麼他需要偏移的位置可能大於3,比如如果序列是7,7,6,那麼(5,3)插入到6後面即可,但是如果是7,7,6,4,那麼(5,3)既可以插到6後面,也可以插到4後面都滿足條件),因此首先需要按照身高排序。
LeetCode 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...
leetcode 406 根據身高重建佇列
c 排序,然後插入。假設候選隊列為 a,已經站好隊的隊列為 b.從 a 裡挑身高最高的人 x 出來,插入到 b.因為 b 中每個人的身高都比 x 要高,因此 x 插入的位置,就是看 x 前面應該有多少人就行了。比如 x 前面有 5 個人,那 x 就插入到佇列 b 的第 5 個位置。class sol...
LeetCode406 根據身高重建佇列
假設有打亂順序的一群人站成乙個佇列。每個人由乙個整數對 h,k 表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。編寫乙個演算法來重建這個佇列。注意 示例輸入 7,0 4,4 7,1 5,0 6,1 5,2 輸出 5,0 7,0 5,2 6,1 4,4 7,1 先看看相同高度h...