406.根據身高重建佇列
阿新 • • 發佈:2018-12-21
假設有打亂順序的一群人站成一個佇列。 每個人由一個整數對(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]]
在真實的面試中遇到過這道題?
class Solution { public: vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) { sort(people.begin(), people.end(), [](const pair<int, int>& a, const pair<int, int>& b) { return a.first > b.first || (a.first == b.first && a.second < b.second); }); vector<pair<int, int>> res; for (auto a : people) { res.insert(res.begin() + a.second, a); } return res; } };