406. Queue Reconstruction by Height
Queue Reconstruction by Height
题目描述:
You are given an array of people, people, which are the attributes of some people in a queue (not necessarily in order). Each people[i] = [hi, ki] represents the ith person of height hi with exactly ki other people in front who have a height greater than or equal to hi.
Reconstruct and return the queue that is represented by the input array people. The returned queue should be formatted as an array queue, where queue[j] = [hj, kj] is the attributes of the jth person in the queue (queue[0] is the person at the front of the queue).
Example 1:
Input: people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]
Output: [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]
Explanation:
Person 0 has height 5 with no other people taller or the same height in front.
Person 1 has height 7 with no other people taller or the same height in front.
Person 2 has height 5 with two persons taller or the same height in front, which is person 0 and 1.
Person 3 has height 6 with one person taller or the same height in front, which is person 1.
Person 4 has height 4 with four people taller or the same height in front, which are people 0, 1, 2, and 3.
Person 5 has height 7 with one person taller or the same height in front, which is person 1.
Hence [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] is the reconstructed queue.
Example 2:
Input: people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]
Output: [[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]
Constraints:
1 <= people.length <= 2000
0 <= hi <= 106
0 <= ki < people.length
It is guaranteed that the queue can be reconstructed.
思路:
先排序,身高从低到高,k从高到低。【4,2】代表前面有2个比他大的,在原来的序列找到比他大的两个就插入
代码:
func reconstructQueue(people [][]int) [][]int {
sort.Slice(people, func(i, j int)bool{
a,b := people[i], people[j]
if a[0] == b[0]{
return a[1] > b[1]
}
return a[0] < b[0]
})
ans := make([][]int, len(people))
for _, p := range people{
distance := p[1] +1
for i := range ans{
if ans[i] == nil{
distance --
if distance ==0{
ans[i] = p
}
}
}
}
return ans
}
代码效率:
执行用时:24 ms, 在所有 Go 提交中击败了43.12%的用户
内存消耗:6.1 MB, 在所有 Go 提交中击败了90.52%的用户
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!