[leetcode] 406. Queue Reconstruction by Height (medium)

it2025-11-14  5

原题

思路: 一开始完全没有思路。。看了别人的思路才解出来。

先按照他们的高度从高到低(因为我后面用的从前往后遍历插入,当然也可以从低到高)排序,如果高度一样,那么按照k值从小到大排序。   排完序后我们可以注意到这样一个事实:如果我们按照先处理身最高的,那他们的k值就是他们所应该在的位置——因为已经没有比他们更高的了。   所以我们从高度从高到低按照k值的位置一直插入到答案中即可。


class Solution { public: static bool cmp(pair<int, int> a, pair<int, int> b) { if (a.first == b.first) return a.second < b.second; return a.first > b.first; } vector<pair<int, int>> reconstructQueue(vector<pair<int, int>> &people) { vector<pair<int, int>> res; sort(people.begin(), people.end(), cmp); for (auto i : people) res.insert(res.begin() + i.second, i); return res; } };

转载于:https://www.cnblogs.com/ruoh3kou/p/9893440.html

最新回复(0)