LeetCode406 根據身高重建佇列

2021-10-01 20:11:59 字數 1020 閱讀 9090

假設有打亂順序的一群人站成乙個佇列。 每個人由乙個整數對(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的情況下的排序規則:按照k的大小進行排序。

k的定義:k是排在這個人前面且身高大於或等於h的人數。也就是說在高度為h的人前後插入高度低於h的人,不影響高度為h的人的k的正確性

舉個例子:

在下面這個佇列中,插入小於7的人,只要他的插入順序正確,不會改變佇列的正確性

[7, 0], [7, 1]

[6, 1]插入位置1:

[7, 0], [6, 1], [7, 1]

[5, 0]插入位置0:

[5, 0], [7, 0], [6, 1], [7, 1]

[5, 2]插入位置2:

[5, 0], [7, 0], [5, 2], [6, 1], [7, 1]

[4, 4]插入位置4:

[5, 0], [7, 0], [5, 2], [6, 1], [4, 4], [7, 1]

所以在重構佇列的時候,首先要將最高的人的安置好,從高到低插入新的人,插入的位置取決於人的k。

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

leetcode406 根據身高重建佇列

參考 sort自定義函式 如果想讓元素按照公升序排序就返回p1p2 vectorint,int reconstructqueue vectorint,int people 按照第一位降序,第二位公升序排序 sort people.begin people.end comp vectorint,int...

leetcode 406 根據身高重建佇列

c 排序,然後插入。假設候選隊列為 a,已經站好隊的隊列為 b.從 a 裡挑身高最高的人 x 出來,插入到 b.因為 b 中每個人的身高都比 x 要高,因此 x 插入的位置,就是看 x 前面應該有多少人就行了。比如 x 前面有 5 個人,那 x 就插入到佇列 b 的第 5 個位置。class sol...