当前位置: 首页 > news >正文

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

题目描述:
假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。
请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

在这里插入图片描述

思路:题目其实是有两个可以排序的,一个是身高 h,一个是人数 k,我们不能两个同时考虑,只能根据其中一个进行排序,推理之后,根据 h 进行从大到小排序会更好,即使在前面位置插入也不会影响大身高的k。

  1. 排序:将people二维数组根据 h 进行从大到小排序,当h相同,选择k大的在前面;
  2. 插入:遍历排序后的数组,根据 k 插入到res列表的第 k 个位置。

代码实现:

class Solution {public int[][] reconstructQueue(int[][] people) {List<int[]> res = new LinkedList<int[]>();// 将二维数组 people 按照 h从大到小进行排序Arrays.sort(people, (x,y) -> x[0]==y[0] ? x[1]-y[1] : y[0]-x[0]);//这句话很重要int len = people.length;// 插入 kfor (int i = 0; i < len; i++) {int position = people[i][1];//当前k,即要插入的位置res.add(position, people[i]);}return res.toArray(new int[res.size()][]);}
}
http://www.lryc.cn/news/143540.html

相关文章:

  • JVM——类加载与字节码技术—编译期处理+类加载阶段
  • C#|如何调试进依赖动态库中
  • 全新版本QStack云管系统3.5.3 附详细安装教程
  • SLB 负载均衡
  • 多核调度预备知识
  • 什么是Git?解释Git的分布式版本控制系统的优势?
  • 软考高级系统架构设计师系列论文九十五:图书馆网络应用体系安全设计
  • qt 实现音视频的分贝检测系统
  • SSM框架和Spring Boot+Mybatis框架的性能比较?
  • 6个月的测试,来面试居然要18K,我一问连8K都不值
  • 优美而高效:解决服务器通信问题
  • C++模板的模板参数(五)
  • 基于jeecg-boot的flowable流程加签功能实现
  • day-03 基于TCP的服务器端/客户端
  • 匿名对象和一般对象的区别
  • [MyBatis系列⑥]注解开发
  • [ACL2023] Exploring Lottery Prompts for Pre-trained Language Models
  • 【Python编程】将同一种图片分类到同一文件夹下,并且将其分类的路径信息写成txt文件进行保存
  • 单例模式的相关知识
  • vue问题相关记录
  • skywalking服务部署
  • 【uni-app】压缩图片并添加水印
  • 《每天十分钟》-红宝书第4版-变量、作用域与内存
  • NFTScan | 08.21~08.27 NFT 市场热点汇总
  • 【Java 中级】一文精通 Spring MVC - 数据验证(七)
  • css奇数偶数选择器
  • 【算法】双指针求解盛最多水的容器
  • 浅析SAS协议:设备接入与探测
  • RISC-V IOPMP实际用例-Andes SoC‘s Rapid-k模型
  • 【高阶数据结构】哈希表详解