We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Difficulty: 中等
Related Topics: 贪心, 树状数组, 线段树, 数组, 排序
假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki个身高大于或等于 hi 的人。
people
i
请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。
queue
j
queue[0]
示例 1:
输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]] 输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 解释: 编号为 0 的人身高为 5 ,没有身高更高或者相同的人排在他前面。 编号为 1 的人身高为 7 ,没有身高更高或者相同的人排在他前面。 编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。 编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。 编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。 编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。 因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。
示例 2:
输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]] 输出:[[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]
提示:
1 <= people.length <= 2000
Language: JavaScript
/** * @param {number[][]} people * @return {number[][]} */ // 先对数组进行排序,按照身高从高到低排序,相同身高的,k小的前面 // 再遍历排序好的people,构造新数组 // 假设当前放置的人为people[i],前面放置过的人,身高肯定比自己高,所以就放在自己对应的K位置即可 var reconstructQueue = function(people) { // 将队列按照身高从高到低排序 // 相同身高的, k小的在前面 people.sort((a, b) => { if (a[0] !== b[0]) return b[0] - a[0] return a[1] - b[1] }) // 构造新数组 const res = [] const len = people.length for (let i = 0; i < len; i++) { // 放置的时候,前面放置过的人,身高肯定比自己高 // 所以就放在自己对应的k位置即可 res.splice(people[i][1], 0, people[i]) } return res };
The text was updated successfully, but these errors were encountered:
No branches or pull requests
406. 根据身高重建队列
Description
Difficulty: 中等
Related Topics: 贪心, 树状数组, 线段树, 数组, 排序
假设有打乱顺序的一群人站成一个队列,数组
people
表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第i
个人的身高为 hi ,前面 正好 有 ki个身高大于或等于 hi 的人。请你重新构造并返回输入数组
people
所表示的队列。返回的队列应该格式化为数组queue
,其中 queue[j] = [hj, kj] 是队列中第j
个人的属性(queue[0]
是排在队列前面的人)。示例 1:
示例 2:
提示:
1 <= people.length <= 2000
Solution
Language: JavaScript
The text was updated successfully, but these errors were encountered: