zoukankan      html  css  js  c++  java
  • leetcode 406. 根据身高重建队列

    题意

    将一群人按排好序,然后制定了一个规则为people[i]=[hi,ki];hi表示该位置人的身高,ki表示i前面身高大于或等于i身高的人数

    思路

    按身高从小到大的顺序放入队列中,i前面有身高比他低的人对ki的值没有影响,所以可以假设后面放进来的都是比前面身高高的,
    这样我们可以根据k值来决定该点应该放入的位置。对于身高相同的人来说,因为后放代表会对前面放的产生影响,所以我们可以规定身高相同的k值越大,身高越小。

    code:

    class Solution {
    private:
        static bool cmp(vector<int>&u,vector<int>&v){
            return u[0]<v[0] || (u[0]==v[0] && u[1]>v[1]);
        }
    public:
        vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
            sort(people.begin(),people.end(),cmp);
            int n=people.size();
            vector<vector<int>>ans(n);
            for(int i=0;i<people.size();i++){
                int space=people[i][1]+1;
                for(int j=0;j<n;j++){
                    if(ans[j].empty()){
                        space--;
                        if(!space) ans[j]=people[i];
                    }
                }
            }
            return ans;
        }
    };
    
    
    七月在野,八月在宇,九月在户,十月蟋蟀入我床下
  • 相关阅读:
    2014年广州区域赛k题解
    2014年广州区域赛e题解
    2014年广州区域赛i题解
    最大化平均值问题
    codeforces 976e 题解
    maven
    机器学习入门
    拟合
    插值
    熵权法
  • 原文地址:https://www.cnblogs.com/voids5/p/14157238.html
Copyright © 2011-2022 走看看