1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class Solution { public int[][] reconstructQueue(int[][] people) { List<List<Integer>> list = new ArrayList<>(); for (int[] pair : people) { list.add(List.of(pair[0], pair[1])); } list.sort((o1, o2) -> { if (o1.get(0).equals(o2.get(0))) { return Integer.compare(o2.get(1), o1.get(1)); } else { return Integer.compare(o1.get(0), o2.get(0)); } });
boolean[] flag = new boolean[people.length];
for (var pair : list) { int index = getIndex(flag, pair.get(1)); people[index][0] = pair.get(0); people[index][1] = pair.get(1); flag[index] = true; } return people; }
private int getIndex(boolean[] flag, int offset) { for (int i = 0; i < flag.length; i++) { if (!flag[i]) { offset--; } if (offset == -1) { return i; } } return -1; } }
|