leetcode406 根據身高重建佇列

2021-09-23 18:21:29 字數 712 閱讀 7353

參考:

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...