406. 根据身高重建队列

根据身高重建队列力扣--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 的人。 阅读详情

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。

思想:贪心算法。

 

先把这些人按高-->矮排列,因为高个子在前面,矮个子插入的时候,不会对高个子产生影响。比如前面是【7,0】要插入【5,0】,把【5,0】放在最前面对【7,0】没有影响。而如果反过来【7,0】插入【5,0】就会产生影响使应该为【5,1】。

排列的时候,身高一样的人按照K由小到大排列,这个道理很简单。

最后,把这些人按已经排好的顺序插入到自己K的位置上去,如果该位置已经有元素,就让该元素后与后面的元素后移一位。因为我们插入的是比已经插入的元素矮的元素,且K值也是同等身高里面矮的那个,所以后移不会对已经插入的造成影响。

 

然后考虑方法,两次排序可以使用java里面ArraysSort,https://blog.youkuaiyun.com/tt_twilight/article/details/70859804这是我发现的比较好的讲解。

要实现后面的插入,可以考虑List的add方法:

List.add(int index, E element)

在指定位置中插入元素,如果该位置有元素,则把该元素以及后面的所有元素后移

最后返回类型是二维数组,用到Quene.toArray();

 

public int[][] reconstructQueue(int[][] people) {
	        if(people.length == 0 || people == null || people[0].length == 0) return people;
	        //先给身高排序,
	        Arrays.sort(people, (a,b)->(a[0]==b[0] ? a[1]-b[1]:b[0]-a[0]));//比较,最高的在前面,若一样高,则排序小的在前面
	        
	        List<int[]> res = new ArrayList<>(people.length);
	        for(int[] p:people)
	        {
	        	res.add(p[1], p);
	        } 
	        return res.toArray(new int[res.size()][]);
	    }

 

循环顺序队列的表示和实现 循环顺序队列的表示和实现,包括队列的初始化、添加删除元素等操作。 立即下载

相关推荐

紫光同创PDS软件操作指南:如何为FPGA新增自定义Flash型号

本文详细介绍了在紫光同创PDS软件中为FPGA新增自定义Flash型号的完整操作指南。针对官方支持列表之外的SPI Flash芯片,文章从理解FPGA配置逻辑入手,逐步讲解如何通过扫描Flash ID、在Flash Operator中精准填写参数、转换.sbit文件,最终完成固化的全过程,并分享了高级技巧与常见问题排查方法,帮助工程师摆脱对预设型号的依赖,实现灵活选型。

weixin_29204749的博客 322

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

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

程序员吴师兄的博客 1364

鸿蒙进阶——HDI及IDL硬件接口IPC框架小结

HDI(Hardware Device Interface):OpenHarmony硬件设备接口,定义系统中跨进程通信的接口,实现服务间的跨进程通信

最美不过,心中有梦,身旁有你! 3902

根据身高重建队列

题目 思路 首先我们从一个最简单的例子出发,当队列中的(h,k)中的h都相同时,那么重新排序就按照k作为索引排序,例如: 所以对于身高相同的情况,就按照人数k作为位置的索引。 那么对于身高不同的情况是怎么样的呢,答案就是也是采用相同的策略,先将身高大的先插入,再将身高小的插入,两者都是按照人数k作为位置索引,因为身高大的看不见身高矮的,之前插入身高高的排序队列与我当前的插入过程无关例如: 相...

clearLB的博客 803

MAX30102心率血氧传感器

估算AC、DC值的方法如下:找两个波谷点,两个波谷点之间有一个波峰点,两个波谷点相连成一条直线,与Y轴平行的线穿过波峰点会与两个波谷点连接成的直线相交于一点,这个点就是DC点,DC点的Y轴对应值就是直流分量,AC分量的值为波峰点到DC点之间的差值。在医院测量中常用的一种血氧采集方式,如下图所示,光电传感器和光源分别置于手指的两侧,光源穿过手指被另一侧的光电二极管接收,根据光衰减量计算血氧浓度。那么,根据上面的Beer-Lambert 定理,针对测量的具体场景,测量过程的衰减为三层穿透物质衰减量的叠加。

qq_41861711的博客 1万+

用App Inventor做个蓝牙温湿度计,手机自动连Arduino,5分钟搞定硬件数据上屏

本文详细介绍了如何使用App Inventor和Arduino快速搭建一个蓝牙温湿度监测系统,实现手机自动连接并显示实时数据。通过图形化编程和硬件组装指南,零代码基础的用户也能在5分钟内完成硬件数据上屏,适用于智能家居、教学演示等多种场景。

weixin_30813225的博客 171

8.11根据身高重建队列(LC406-M)

a和b代表了people数组中的两个元素,每个元素都是一个一维数组,表示一个人的身高和前面的人数。a[0]表示第一个人的身高,a[1]表示第一个人的前面人数。b[0]表示第二个人的身高,b[1]表示第二个人的前面人数。因此,中的比较逻辑根据这些元素的身高和前面的人数进行排序。如果a和b的身高相同(),则表示根据前面的人数升序排列。( a - b 是升序)如果a和b的身高不同,则表示根据身高降序排列。( b - a 是降序)

m0_50696252的博客 1577

Qt 5.14安装(配置MSVC 2017)

本文主要介绍Qt MSVC的安装,VS2017.

ifeng12358的博客 3709

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

Pandas滚动窗口的妙用:动态计算列数据的最大值

Pandas的滚动窗口(rolling window)功能是数据分析中处理时间序列数据的重要工具。本文通过实例演示了如何使用rolling(window=4).max()计算DataFrame列A的滚动最大值,并将结果存入新列Max_Range。该方法会在4个元素的滑动窗口内计算最大值,前3行因数据不足显示为NaN。这种技术广泛应用于金融分析(如股价波动)、数据平滑和趋势识别等场景,能有效帮助分析数据的动态变化特征。示例展示了从数据准备到结果输出的完整流程,体现了Pandas在处理滑动窗口计算时的高效性和便

m0_74337424的博客 53

字节最新开源模型 DA3(Depth Anything 3)使用教程(一)从任意视角恢复视觉空间

本文介绍DepthAnything3(DA3)模型,一种能够从任意视觉输入中预测几何结构的创新解决方案。DA3采用Transformer骨干网络,通过统一的深度光线表示简化学习过程,支持单目/多视角深度估计、姿态估计和3D高斯预测等多项任务。模型系列包含基础版、度量级和单目专用版本,其中嵌套版本DA3NESTED-GIANT-LARGE表现最佳。代码库提供交互界面、CLI工具和多格式导出功能,支持模块化扩展。实验表明DA3在各项任务上超越现有模型,所有训练数据均来自公开学术数据集。

2506_90492529的博客 2548

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

力扣406题,根据身高重建队列,主要是对题目的理解,以及容器插入操作的效率优化

mrqiuwen的博客 494

AI赋能数字人:打造与语音节奏完美匹配的高质量手势动画

想象一个场景:当你与一位数字人交谈时,它不仅能理解你的言语,还能恰到好处地挥动手臂、比划手势,就像真实的人类交流一样自然流畅。这正是当前AI技术致力于实现的目标——通过分析语音内容,自动生成与之相匹配的手势动作,为数字人赋予更加丰富的情感表达和非言语沟通能力。AI手势生成技术的出现,标志着数字人在模仿人类自然交流方式上迈出了重要一步。随着技术的不断成熟与应用场景的拓宽,未来我们可以期待更多富有表现力和情感互动的数字人出现在我们的日常生活中,开启人机交互的新篇章。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 792

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...

Coder Yang 1146

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【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的博客 554

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

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

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的博客 347

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

406根据身高重建队列

一、前言 标签:贪心算法。 问题来源LeetCode 406 难度:中等。 问题链接:https://leetcode-cn.com/problems/queue-reconstruction-by-height/ 二、题目 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意:总.

行走 585

[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

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

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

m0_71523828的博客 656

LeetCode - 406. 根据身高重建队列

406. 根据身高重建队列 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意: 总人数少于1100人。 解题思路: 先将序列进行排序,排序的规则是按照身高降序,身高相同时按照个数升序。 [LeetCode] 406. Queue Reconstruction by He...

virgilshi的博客 378

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

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

空空如也 262
上一篇: java comparable 和 comparator
下一篇: 605.种花问题
monkey1008611
博客等级 码龄10年 14粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值