假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。
注意:
总人数少于1100人。
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
vector<vector<int>> output;
std::sort(people.begin(), people.end(), greater<vector<int>>());
int g = 0;
while (g < people.size()) {
int r = g;
while (r + 1 < people.size() && people[r][0] == people[r + 1][0])
r++;
for (int i = r; i >= g; i--) {
if (people[i][1] < output.size()) {
output.insert(output.begin() + people[i][1], people[i]);
continue;
}
output.push_back(people[i]);
}
g = r + 1;
}
return output;
}