406. Queue Reconstruction by Height

来源:互联网 发布:淘宝二次审核 编辑:程序博客网 时间:2024/06/03 16:29

Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k), where h is the height of the person and k is the number of people in front of this person who have a height greater than or equal to h. Write an algorithm to reconstruct the queue.

Note:
The number of people is less than 1,100.

Example

Input:[[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]]

Subscribe to see which companies asked this question.

public class Solution {    public int[][] reconstructQueue(int[][] people) {        if(people.length ==0||people[0].length ==0)return people;        for (int i = 1; i < people.length; ++i) {int[] temp = people[i];int j = i;for (; j > 0 && people[j - 1][1] > temp[1]; --j)people[j] = people[j - 1];for (; j > 0 && people[j - 1][0] > temp[0] && people[j - 1][1] == temp[1]; --j)people[j] = people[j - 1];people[j] = temp;}List<int[]> data = new ArrayList<>();data.add(people[0]);for (int i = 1; i < people.length; ++i) {int[] temp = people[i];int k = temp[0];int n = temp[1];boolean flag = true;for (int j = 0; j < data.size(); ++j) {int[] cur = data.get(j);if (cur[0] >= k && n == 0) {data.add(j, temp);flag = false;break;} else if (cur[0] >= k && n > 0)n--;}if (flag)data.add(temp);}for (int i = 0; i < people.length; ++i)people[i] = data.get(i);return people;    }}


0 0
原创粉丝点击