美文网首页
[LeetCode] 406. Queue Reconstruc

[LeetCode] 406. Queue Reconstruc

作者: 弱花 | 来源:发表于2018-11-02 11:41 被阅读0次

原题


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

先按照他们的高度从高到低(因为我后面用的从前往后遍历插入,当然也可以从低到高)排序,如果高度一样,那么按照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;
  }
};

相关文章

网友评论

      本文标题:[LeetCode] 406. Queue Reconstruc

      本文链接:https://www.haomeiwen.com/subject/qiiqxqtx.html