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

devtools/2024/11/7 20:37:29/

LeetCode 406. 根据身高重建队列

题目描述

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

思路

参考的题解【先排序,再插队】动画演示算法过程,有点小套路

  1. 先做排序,排序思路是h_i降序,k_i升序(这么排序是为了保证正确性,如果k_i是降序排列的话,假设有(5,5),先插入到队列之后,又插入(5,1),但此时(5,5)前面排队的人多了一个,就导致不符合我们目标要求)
  2. 排序完成后,将结果往list里放,放的规则是:
    I. 如果列表当前长度<k_i的话,直接将这个人插入到列表末尾
    II. 否则将这个人插入到列表的k_i处

代码

class Solution {public int[][] reconstructQueue(int[][] people) {// 第一个元素降序,第二个元素升序Arrays.sort(people, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {if (o1[0] != o2[0]){// 第一个元素不相等,降序排列return o2[0] - o1[0];} else {// 第二个元素升序排列return o1[1] - o2[1];}}});// 排序过后,往结果里放List<int[]> list = new LinkedList<>();for (int i = 0; i < people.length; i++) {if (list.size() < people[i][1]){list.add(people[i]);} else {list.add(people[i][1], people[i]);}}return list.toArray(new int[list.size()][]);}
}

http://www.ppmy.cn/devtools/132117.html

相关文章

《Spring Boot从入门到实战》第五章习题答案

5.7 本章练习 1&#xff09;创建Spring Boot Web项目&#xff0c;使用Thymeleaf页面模板引擎实现人员管理模块的功能。 答案&#xff1a; 1. 创建人员实体类 创建一个 Person 实体类&#xff0c;用于定义人员属性 package com.example.demo.bean;import javax.persistence.…

HTML第一次作业

制作带有下拉悬停菜单的导航栏 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>带有下拉悬停菜单的导航栏</title><style>* {margin: 0;padding: 0;}#menu {background-color: blue;width: 100%;height: 50p…

一个国产 API 开源项目,在 ProductHunt 杀疯了...

随着AI 大模型技术的兴起&#xff0c;全球产品更新和面市进程速度肉眼可见的加快&#xff0c;Product Hunt 作为全球知名的产品发现平台&#xff0c;每日都会精选出一系列产品能力强劲的新产品&#xff0c;这些产品不仅代表了技术前沿&#xff0c;还反映了市场的发展趋势。 上…

ubuntu 22.04 server 安装 和 初始化 LTS

ubuntu 22.04 server 安装 和 初始化 下载地址 https://releases.ubuntu.com/jammy/ 使用的镜像是 ubuntu-22.04.5-live-server-amd64.iso usb 启动盘制作工具 https://rufus.ie/zh/ rufus-4.6p.exe 需要主板 支持 UEFI 启动 Ubuntu22.04.4-server安装 流程 https://b…

解决 Fail to pip install mlc-llm

[Question] Fail to pip install mlc-llm Issue #2974 mlc-ai/mlc-llm GitHub❓ General Questions Hi, I’m trying to install mlc-llm on my Jetson agx orin. Environment: Jetson agx orin、Ubuntu 20.04、CUDA 12.2 I ran the following commands:conda create -n ml…

解密.Lockbit3.0勒索病毒:恢复加密数据与预防策略

引言 随着信息技术的飞速发展&#xff0c;勒索病毒作为一种新型的网络攻击手段&#xff0c;正对全球范围内的计算机系统构成严重威胁。其中&#xff0c;.Lockbit3.0勒索病毒以其高度的隐蔽性、传播性和危害性&#xff0c;成为了众多企业和个人用户的心头之患。本文将详细介绍.…

苍穹外卖Day3test报错javax.websocket.server.ServerContainer not available

苍穹外卖Day3test报错javax.websocket.server.ServerContainer not available springboot 中集成websocket出的问题 测试会报错&#xff0c;启动程序不会报错 除了test的时候运行会报错&#xff0c;正常时候编写不会出错&#xff0c;不用管这个问题&#xff0c;继续往下进行…

企业CRM管理系统PHP源码/PHP客户关系CRM客户管理系统源码

系统功能实现 1、 公海管理:公海类型、客户公海。 2、 线索管理:我的线索、线索列表、线索状态、线索来源。 3、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客户级别。 4、 业绩订单:订单列表、我的订单。 5、 系统设置:系统设置…