使用 JavaScript 解决LeetCode经典题:根据身高重建队列

本文介绍了一种解决特定队列重建问题的算法。该算法首先根据人的身高进行降序排序,然后根据每个人前面高个子的数量将他们插入到正确的位置。通过这种方式,能够有效地重构原始的队列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、题目描述

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

2、解题思路

1、根据题意,k表示排在它前面且h大于等于它的数量,不难理解,把h小的放在某个整数对前面对他无影响
2、先根据h降序排列,得到初步排列情况
3、遍历整数对,根据k将其放在新数组索引为k的位置
4、可以轻松验证这个做法的正确性
4.1、遍历时大数先排,小数后排,所以小数后续插入在前面也不会有影响
5、返回新数组,即为所求排序好的数组

3、解题代码

/**
 * @param {number[][]} people
 * @return {number[][]}
 */
var reconstructQueue = function(people) {
	let res = [];
	people.sort((a,b)=>a[0] === b[0] ? a[1]-b[1] : b[0]-a[0]);
	people.forEach(e=>res.splice(e[1],0,e));
	return res;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值