《極限競速地平線5》S2冬季賽車輛調校推薦
阿新 • • 發佈:2021-12-28
假設有打亂順序的一群人站成一個佇列,陣列 people 表示佇列中一些人的屬性(不一定按順序)。每個 people[i] = [hi, ki] 表示第 i 個人的身高為 hi ,前面 正好 有 ki 個身高大於或等於 hi 的人。
請你重新構造並返回輸入陣列people 所表示的佇列。返回的佇列應該格式化為陣列 queue ,其中 queue[j] = [hj, kj] 是佇列中第 j 個人的屬性(queue[0] 是排在佇列前面的人)。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/queue-reconstruction-by-height
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
從低到高
import java.util.*; class Solution { public int[][] reconstructQueue(int[][] people) { if (people == null || people.length == 0 || people[0].length == 0) { return new int[0][0]; } int n = people.length; Arrays.sort(people, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if (o1[0] == o2[0]) { return Integer.compare(o2[1], o1[1]); } return Integer.compare(o1[0], o2[0]); } }); int[][] ans = new int[n][]; for (int i = 0; i < n; ++i) { int index = 0, cnt = 0; while (cnt < people[i][1]) { if (ans[index] == null) { cnt++; } index++; } while (ans[index] != null) { index++; } ans[index] = people[i]; } return ans; } }
從高到低
心之所向,素履以往 生如逆旅,一葦以航import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; class Solution { public int[][] reconstructQueue(int[][] people) { Arrays.sort(people, new Comparator<int[]>() { public int compare(int[] person1, int[] person2) { if (person1[0] != person2[0]) { return Integer.compare(person2[0], person1[0]); } else { return Integer.compare(person1[1], person2[1]); } } }); List<int[]> ans = new ArrayList<>(); for (int[] person : people) { ans.add(person[1], person); } return ans.toArray(new int[ans.size()][]); } }