首页 > 其他分享 >LeetCode 406. 根据身高重建队列

LeetCode 406. 根据身高重建队列

时间:2023-07-25 11:35:03浏览次数:29  
标签:pre node head 队列 next 406 int vector LeetCode

class Solution {
public:
    struct node
    {
        int val;
        int pre;
        node* next;
        node(int a,int b,node* c)
        {
            val=a;
            pre=b;
            next=c;
        }
    };
    void insert(node* &head,int h,int pre)
    {
        auto p=head;
        int cnt=0;
        while(p->next&&cnt<pre)
        {
            if(p->next->val>=h)   cnt++;
            p=p->next;
        }
        p->next=new node(h,pre,p->next);   
    }
    static bool cmp(vector<int> &a, vector<int> &b) 
    {
        if(a[0]==b[0])  return a[1]<b[1];//要求少的先排
        else return a[0]>b[0];//高的先排
    };
    vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
        auto head=new node(-1,-1,NULL);
    sort(people.begin(), people.end(), cmp);
        vector<vector<int>> res;
        for(auto q:people)
        {
            int h=q[0],pre=q[1];
            insert(head,h,pre);
        }
        for(auto p=head->next;p;p=p->next)
            res.push_back({p->val,p->pre});
        return res;
    }
};

标签:pre,node,head,队列,next,406,int,vector,LeetCode
From: https://www.cnblogs.com/tangxibomb/p/17579366.html

相关文章

  • leetcode第354场周赛 2 - 双指针
    题目传送门2779.数组的最大美丽值题意给你一个数组和一个整数k,数组里面每个数都只能操作一次:加上区间\([-k,k]\)里的数。问你最终由相等元素组成的最长子序列的长度双指针的妙用!思路先排序,前后双指针取差值在2k之间的区间,此区间的所有数均可以操作为同一个属,ans统计最大值......
  • LeetCode 热题 100 之 21. 合并两个有序链表
    题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]提示:两个链表的节点数目范围是[......
  • LeetCode 热题 100 之 560. 和为 K 的子数组.md
    题目给你一个整数数组nums和一个整数 k,请你统计并返回该数组中和为 k 的连续子数组的个数 。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1<=nums.length<=2*10^4-1000<=nums[i]<=1000-10^7<=k<=10^7思路......
  • [Leetcode Weekly Contest]355
    链接:LeetCode[Leetcode]6921.按分隔符拆分字符串给你一个字符串数组words和一个字符separator,请你按separator拆分words中的每个字符串。返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串。注意separator用于决定拆分发生的位置,但它不包含在结果字符串......
  • LeetCode 热题 100 之 438. 找到字符串中所有字母异位词
    题目给定两个字符串 s 和p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。示例 1:输入:s="cbaebabacd",p="abc"输出:[0,6]解释:起始索引等于0的子串是"cba"......
  • 6 栈与队列
    栈与队列1栈与队列基础栈:先进后出栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。我们常用的SGISTL,如果没有指定底层实现的话,默认是以deque为缺省情况下栈的底层结构。2用栈实现队列题目:......
  • LeetCode 热题 100 之 3. 无重复字符的最长子串
    题目给定一个字符串s,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:......
  • LeetCode 399. 除法求值
    classSolution{public:vector<double>calcEquation(vector<vector<string>>&equations,vector<double>&values,vector<vector<string>>&queries){unordered_set<string>node;//记录所有节点......
  • leetcode第109场双周赛
    题目传送门6931.访问数组中的位置使分数最大题意给你一个数组,初始你位于下标1处,你可以往后跳到数组任一下标,但不能往前跳。跳到哪个位置,即可获得下标对应的分数,但如果当前下标的数与跳之前下标的数奇偶性不同,那么你会失去分数x。询问你能获得的最大分数?思路一眼动态规划,......
  • LeetCode 周赛上分之旅 #35 两题坐牢,菜鸡现出原形
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和[BaguTreePro]知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场LeetCode周赛的解题报告......