贪心算法LeetCode 406 Queue Reconstruction by Height

本文介绍LeetCode406题目的解决方案,题目要求根据每个人的身高和在其前方不低于其身高的人数来重建队列。通过先按身高降序排序,再按序号升序排序的方法,并使用插入操作实现队列的正确构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LeetCode 406

Queue Reconstruction by Height

  • Problem Description:
    根据身高和序号重组队列。题目给出一组数,如[6, 1]表示该人的身高是6,队列中排在他前面不比他矮的人有1个;如[7, 0]表示该人的身高是7,队列中排在他前面的人都比他矮或者处于第一位。题目要求按照每一组数中第二个值对队伍进行重新排序,使新的队伍满足序号大小。
    具体的题目信息:
    https://leetcode.com/problems/queue-reconstruction-by-height/description/
  • Example:
  • Solution:
    • 解题思路(?)
      这道题目还不是很理解,解法也是在讨论区看到的,还要继续思考。
    • 编程实现:
class Solution {
public:
//先按照身高降序排列,再按照序号升序排列
    static bool compare(pair<int, int> a, pair<int, int>b) {
        return (a.first>b.first || (a.first==b.first&&a.second<b.second));
    }
    vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) {
        vector<pair<int, int>> result;
        if (people.size() == 0||people.size() == 1) return people;
        sort(people.begin(), people.end(), compare);
        for (int i = 0; i < people.size(); i++) {
            result.insert(result.begin()+people[i].second, people[i]);
        }
        return result;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值