假設有打亂順序的一群人站成乙個佇列,陣列 people 表示佇列中一些人的屬性(不一定按順序)。每個 people[i] = [hi, ki] 表示第 i 個人的身高為 hi ,前面 正好 有 ki 個身高大於或等於 hi 的人。
請你重新構造並返回輸入陣列 people 所表示的佇列。返回的佇列應該格式化為陣列 queue ,其中 queue[j] = [hj, kj] 是佇列中第 j 個人的屬性(queue[0] 是排在佇列前面的人)。
力扣:406. 根據身高重建佇列
輸入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]本題有兩個維度,h 和 k,如果按照 k 來從小到大排序,會發現 k 的排列並不符合條件,身高 h 也不符合條件,兩個維度都沒確定下來;如果按照身高 h 來排序,從大到小排(身高相同k小的站前面),讓高個子在前面,此時前面的節點一定都比本節點高。輸出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]
解釋:編號為 0 的人身高為 5 ,沒有身高更高或者相同的人排在他前面。
編號為 1 的人身高為 7 ,沒有身高更高或者相同的人排在他前面。
編號為 2 的人身高為 5 ,有 2 個身高更高或者相同的人排在他前面,即編號為 0 和 1 的人。
編號為 3 的人身高為 6 ,有 1 個身高更高或者相同的人排在他前面,即編號為 1 的人。
編號為 4 的人身高為 4 ,有 4 個身高更高或者相同的人排在他前面,即編號為 0、1、2、3 的人。
編號為 5 的人身高為 7 ,有 1 個身高更高或者相同的人排在他前面,即編號為 1 的人。
因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新構造後的佇列。
因此可得出排序的條件:
1、身高 h 從大到小排序
2、身高相等時,按照 k 從小到大排序
以上輸入為例,排序後得到 [ [ 7 , 0 ] , [ 7 , 1 ] , [ 6 , 1 ] , [ 5 , 0 ] , [ 5 , 2 ] , [ 4, 4 ] ]
接下來需要考慮前面比自己高的人數 k , 會發現如果按照身高高的 people 的 k 來插入, 後序插入的節點也不會影響前面已經插入好的節點。
例如插入過程:
插入[ 7 , 0 ] :[ [ 7 , 0 ] ]
插入[ 7 , 1 ] :[ [ 7 , 0 ] , [ 7 , 1 ] ]
插入[ 6 , 1 ] :[ [ 7 , 0 ] , [ 6 , 1 ] , [ 7 , 1 ] ]
插入[ 5 , 0 ] :[ [ 5 , 0 ] , [ 7 , 0 ] , [ 6 , 1 ] , [ 7 , 1 ] ]
插入[ 5 , 2 ] :[ [ 5 , 0 ] , [ 7 , 0 ] , [ 5 , 2 ] , [ 6 , 1 ] , [ 7 , 1 ] ]
插入[ 4 , 4 ] :[ [ 5 , 0 ] , [ 7 , 0 ] , [ 5 , 2 ] , [ 6 , 1 ] , [ 4 , 4 ] , [ 7 , 1 ] ]
ac**:
class
solution
else
return p2[0]
- p1[0]
;// p1[0] == p2[0] ? p1[1] - p2[1] : p2[0] - p1[0];})
;// 2. 按照 k 插入
list<
int[
]> list =
newlinkedlist
<
>()
;for
(int
person : people)
return list.
toarray
(people);}
}
根據身高重建佇列
題目 假設有打亂順序的一群人站成乙個佇列。每個人由乙個整數對 h,k 表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。編寫乙個演算法來重建這個佇列。leetcode406 注意 總人數少於1100人。示例輸入 7,0 4,4 7,1 5,0 6,1 5,2 輸出 5,0 7,...
LeetCode 根據身高重建佇列
題目如下 假設有打亂順序的一群人站成乙個佇列。每個人由乙個整數對 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 ...
leetcode 根據身高重建佇列
這一題,我當時真的沒想到乙個好的思路,比較簡潔,比較work的是思路,於是我看了答案 題目 假設有打亂順序的一群人站成乙個佇列。每個人由乙個整數對 h,k 表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。編寫乙個演算法來重建這個佇列。注意 總人數少於1100人 輸入 7,0 ...