Leetcode406. 根据身高重建队列

根据身高重建队列力扣--406 当他把【6,1】插入到【7,1】前面的话,不会影响【7,1】前面只有一个大于等于他的情况,所以说从大到小排序。编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。 阅读详情

Every day a Leetcode

题目来源:406. 根据身高重建队列

解法1:贪心

题解:根据身高重建队列

我们先按照身高从大到小排序(身高相同的情况下K小的在前面),这样的话,无论哪个人的身高都小于等于他前面人的身高。所以接下来只要按照K值将他插入相应的位置就可以了。

例如:

在这里插入图片描述

示例1排完序:[[7,0],[7,1],[6,1],[5,0],[5,2],[4,4]]

新建一个二维vector:
[7,0]插入第0的位置
[7,1]插入第1的位置
[6,1]插入第1的位置,这时[7,1]就往后移一位了
…

代码:

/*
 * @lc app=leetcode.cn id=406 lang=cpp
 *
 * [406] 根据身高重建队列
 */

// @lc code=start
class Solution
{
private:
    static bool cmp(vector<int> &a, vector<int> &b)
    {
        if (a[0] == b[0])
            return a[1] < b[1];
        return a[0] > b[0];
    }

public:
    vector<vector<int>> reconstructQueue(vector<vector<int>> &people)
    {
        int n = people.size();
        sort(people.begin(), people.end(), cmp);
        vector<vector<int>> queue;
        for (const vector<int> &person : people)
        {
            int pos = person[1];
            queue.insert(queue.begin() + pos, person);
        }
        return queue;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n2),其中 n 是数组 people 的长度。我们需要 O(nlogn) 的时间进行排序,随后需要 O(n2) 的时间遍历每一个人并将他们放入队列中。由于前者在渐近意义下小于后者,因此总时间复杂度为 O(n2)。

空间复杂度: O(logn),其中 n 是数组 people 的长度。排序需要 O(logn) 的栈空间。

LeetCode:406 根据身高重建队列 贪心 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出: [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] ... 阅读详情

相关推荐

ESP32-S3打造离线语音助手:从零部署自定义唤醒词与本地大模型推理【实战指南】

本文详细介绍了如何利用ESP32-S3芯片打造离线语音助手,包括自定义唤醒词训练与本地大模型推理的实战指南。通过硬件架构解析、音频处理优化及性能调优技巧,实现低延迟、高隐私保护的语音交互方案,特别适合智能家居和物联网应用。

weixin_30296405的博客 608

406. 根据身高重建队列(力扣LeetCode)

排序完的people: [[7,0], [7,1], [6,1], [5,0], [5,2],[4,4]]因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]插入[4,4]:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]

m0_73841621的博客 1389

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏)

这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。

yue_yun_的博客 9403

力扣(LeetCode) 406-根据身高重建队列【中等】

406. 根据身高重建队列 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出: [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] 方法一:从高到低考虑 (h, k)中的k表示排在这个人前面且身高大于或等于h的人数

Lijunpeng1997的博客 678

基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。1、在之前介绍过全局配置类Contants中添加一个控制台日志开关控制权限,如果选择为false,则控制台不输出日志,将日志输出到allure报表,选择为true,则在控制台输出日志,不输出到allure报表。

专注于技术分享的博主 1186

cadence数模混合仿真反标sdf

数模混合IC设计时经常要调用一些Verilog模块(最简单的例如SPI接口),在前仿时一般直接用rtl代码来仿真,但是后仿时要关注因寄生带来的延迟,避免这些额外的延迟导致时序错误,因此不能简单地采用RTL来仿真。 一般有两种办法:1是采用由RTL综合得到的门级电路来仿真,这种方法比较简单,但是缺点是规模较大,而且只包括门延迟不包括因版图导致的线延迟;如果想要仿真更精细,就要对该这部分门电路提取寄生参数; 另一种方式是利用sdf文件(standard delay format)来进行仿真。后端工具在布局布

长河柱天的博客 7275

力扣Leetcode之Java解题406根据身高重建队列

leetcode之Java刷题

小李子Lee 415

微信小程序实现锚点效果 scroll-view的scroll-into-view属性

小程序中实现锚点效果,可以直接使用scroll-view的scroll-into-view属性就可以实现锚点效果,比较方便简单。那么需要用到scroll-view那些参数呢,下面具体讲讲:效果展示: wxml **注意:**viewid值是动态的,通过setData设置即可。js wxss......

FaxMiao的博客 5450

leetcode力扣406. 根据身高重建队列

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出: [[5,0], [7,0], [5,2], [6,1], [4,4]...

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 1361

ASIC--DFT可测性设计工程师

DFT是什么? DFT是design for test(可测性设计)的缩写,就是在芯片设计过程中,加入可测性逻辑。有的公司把该职位归到前端设计,有的归到中端实现。 DFT职位大多分布于规模较大的数字IC设计公司里,因为大公司对芯片品质要求高,而且规模越大,芯片越贵,DFT就越复杂越重要。DFT主要是通过在芯片中加入可测性逻辑,等芯片制造出来,在ATE(AutomaticTestEquipmen...

TroubleMaker 2万+

Open3D 曲率下采样

曲率下采样是一种基于几何特征的点云处理技术,通过计算每个点的曲率来判断其所在位置的局部表面特征,从而进行选择性保留。曲率的计算通常基于点的法向量和其邻域点的分布。

纵马踏花向自由 843

leetcode第406题 根据身高重建队列 思路&&代码

中等提示假设有打乱顺序的一群人站成一个队列,数组people表示队列中一些人的属性(不一定按顺序)。每个表示第i个人的身高为hi,前面有ki个身高大于或等于hi的人。请你重新构造并返回输入数组people所表示的队列。返回的队列应该格式化为数组queue,其中是队列中第j个人的属性(queue[0]是排在队列前面的人)。编号为 0 的人身高为 5 ,没有身高更高或者相同的人排在他前面。编号为 1 的人身高为 7 ,没有身高更高或者相同的人排在他前面。

m0_71523828的博客 656

Python 【编程实战】玩转 MCP 在工具函数中获取请求 Headers 的正确姿势

本文介绍了如何在使用FastMCP框架的工具函数中获取请求信息。通过Context对象可以访问请求上下文,包括请求头、用户信息等。具体实现方式是在工具函数中注入ctx:Context参数,通过ctx.request_context.request获取Starlette的Request对象,从而访问headers等信息。Context参数的位置可以灵活放置,但建议放在函数参数的开头或末尾。这种机制为权限校验、数据打点等操作提供了统一访问不同通信模式下请求信息的解决方案。

wjianwei666的专栏 391

【LeetCode】406. 根据身高重建队列

题目 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例: 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出: [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] 解题思路 方法一:从低到高考虑 思路与算法 当每个人的身高都不相同时,如果我们将他们按

jiiiiiaaaa的博客 555

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[C++]Leetcode406.根据身高重建队列

406.根据身高重建队列 题目:假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意:总人数少于1100人。 示例: 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] class Solution { public: vector<vec

cpb____的博客 599

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

leetcode406根据身高重建队列

leetcode406根据身高重建队列 思路:自定义排序+插入排序 将原序列根据h降序,k升序 通过插入排序即可 void add(int index, E element); class Solution { public int[][] reconstructQueue(int[][] people) { Comparator<int[]> c = new...

is Mr.Chen的博客 461

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【练习】【贪心】力扣406. 根据身高重建队列

每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]输出:[[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]

2402_86344613的博客 489

LeetCode 406 : 根据身高重建队列 【贪心】

406. 根据身高重建队列 难度中等304 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出: [[5,0], [7,0], [5,2],...

liuhehe123的博客 348

LeetCode 406.根据身高重建队列

LeetCode 406.根据身高重建队列 题目描述 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例: 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出: [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] class Solution { public

空空如也 264

LeetCode 题解 | 406 号问题:根据身高重建队列

点击关注上方“五分钟学算法”,设为“置顶或星标”,第一时间送达干货。今天分享的题目来源于 LeetCode 第 406 号问题:根据身高重建队列。一、题目描述 假设有打乱顺序的一群人站...

程序员吴师兄的博客 1364

力扣406 根据身高重建队列 java实现

本文探讨了根据身高重建队列的问题。给定一个由[hi,ki]组成的数组,表示每个人的身高hi及其前面身高≥hi的人数ki,要求重建正确的队列顺序。解决方法是先按身高降序排序(身高相同时按ki升序),然后依次将每个人插入到队列中ki指定的位置。这样能确保高个子先排好位置,后续插入的矮个子不会影响已排好高个子的ki值。示例展示了算法的具体执行过程,最终返回重建后的队列。该方法时间复杂度主要取决于排序步骤,为O(nlogn)。

m0_58648798的博客 738

Leetcode406. 根据身高重建队列(C语言)

Leetcode406. 根据身高重建队列(C语言) 算法-贪心思想:算法与数据结构参考 题目: 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。例: 输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出:[[5,0], [7,0],...

jeanlu的博客 1882

leetcode(力扣) 406. 根据身高重建队列 (贪心)

举例: 上了第一节体育课,老师给大家排好了体操的队伍,可是大家脑子都很笨,记不清自己在哪,老师说,你就看前面有几个比自己高的就行!就像这样: [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]] 该上第二节课的时候,大家记住了前面有几个比自己高的,却还是忘记了怎么排,老师见状让学生从高到低排好队,身高一样的,比自己高的越多,越往后面站,像这样:

深度不学习!!的博客 484

golang力扣leetcode 406.根据身高重建队列

406.根据身高重建队列406.根据身高重建队列题解代码 406.根据身高重建队列 406.根据身高重建队列 题解 题目:给定一个打算的<身高,前面有k个人身高大于等于自己>的数组,返回一个按照<身高,前面有k个人身高大于等于自己>要求排列的数组 思路: 1.一般这种数对的数组,都是按照第一个排序,第二个反着排序 2.这里看到要求是,前面有k个身高大于等于自己的人 3.那么先对身高进行降序,对k进行升序 因为 “有k个身高大于等于自己的人”这个条件,那么必定对于每个人来说 前面的人身

清风 528

LeetCode406☞根据身高重建队列

ArrayList的对象方法toArray(arr) 优先将列表元素存到数组arr,否则,将为此分配相同运行时类型的新数组。sort(Comparator) , (a,b)->a-b 表示从小到大排序,b-a表示从大到小。:优先按身高高的people的k来插入。插入操作过后的people满足队列属性。#按照第一个元素的从大到小排序,如果第一个元素相同,则按照第二个元素从小到大排序。:最后都做完插入操作,整个队列满足题目队列属性。,若二维数组使用该方法,输出子层元素值。

fantasy_4的博客 545

Leetcode 406. 根据身高重建队列 C++

Leetcode 406. 根据身高重建队列 题目 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 输出: [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] 题解 我们根据k进行第一关键字,h为第二关键字进行排序。显

weixin_43750513的博客 359
上一篇: Leetcode122. 买卖股票的最佳时机 II
下一篇: Leetcode665. 非递减数列
UestcXiye
博客等级 码龄8年 9032粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值