美文网首页
[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