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;
};