zoukankan      html  css  js  c++  java
  • leetcode_queue-reconstruction-by-height

    题目链接

    queue-reconstruction-by-height

    题目描述

    假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对 (h, k) 表示,其中 h 是这个人的身高,k 是应该排在这个人前面且身高大于或等于 h 的人数。 例如:[5,2] 表示前面应该有 2 个身高大于等于 5 的人,而 [5,0] 表示前面不应该存在身高大于等于 5 的人。

    编写一个算法,根据每个人的身高 h 重建这个队列,使之满足每个整数对 (h, k) 中对人数 k 的要求。

    示例:

    输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
    输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

    解题思路

    1.首先将vector按照h的值从大到小排列,当h的值相同时,按照k从小到大排列。这一步我们可以使用了泛型编程,sort的第三个参数被default为按照第一个元素从小到大排列,我们可以使用一个函数替代原本的排列方法,代码中演示了使用方法。
    2.遍历vector,根据k的值进行前插,最后得到的队列每一个值都符合最终要求。

    代码

    class Solution {  
    public:  
        vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {  
           sort(people.begin(), people.end(), [](const vector<int>& u, const vector<int>& v) {  
                return u[0] > v[0] || (u[0] == v[0] && u[1] < v[1]);  
            });  
            vector<vector<int>> res;  
            for (const vector<int>& person: people) { 
                res.insert(res.begin() + person[1], person);  
            }  
            return res;  
        }  
    };
    
  • 相关阅读:
    day39-Spring 06-Spring的AOP:带有切点的切面
    第五讲:单例模式
    day39-Spring 05-Spring的AOP:不带有切点的切面
    day39-Spring 04-CGLIB的动态代理
    day39-Spring 03-JDK的动态代理
    day39-Spring 02-AOP的概述
    第三十二讲:UML类图(下)
    ASP.NET资源大全
    ASP.NET资源大全
    ASP.NET资源大全
  • 原文地址:https://www.cnblogs.com/unclejokermr/p/13991900.html
Copyright © 2011-2022 走看看