假設有打亂順序的一群人站成乙個佇列。 每個人由乙個整數對(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,1]]
1. 從高到低排序
將每個人按照身高從大到小進行降序排列,對於身高相同的人以 k 公升序排列
按照排完序後的順序,依次放入佇列
因第1步的排序處理,後處理的人均不會影響到當前處理的人 k 值,因此當我們放入第 i 個人時,只需要將其插入佇列中,使得他的前面恰好有 k 個人即可。
/**
* @param people
* @return
*/var
reconstructqueue
=function
(people)
;
2. 從低到高
按照身高進行公升序排列,對於身高相同的人以 k 降序排列
依次進入佇列,置於預留了 k 個空位後佇列的第乙個空位上,即佇列當前的第 k + 1 個空位
/**
* @param people
* @return
*/var
reconstructqueue
=function
(people)}}
)return ans
};
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...