406. Queue Reconstruction by Height ¶ Time: $O(n^2)$ Space: $O(n)$ C++JavaPython 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15class Solution { public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { vector<vector<int>> ans; ranges::sort(people, [](const vector<int>& a, const vector<int>& b) { return a[0] == b[0] ? a[1] < b[1] : a[0] > b[0]; }); for (const vector<int>& p : people) ans.insert(ans.begin() + p[1], p); return ans; } }; 1 2 3 4 5 6 7 8 9 10 11 12 13class Solution { public int[][] reconstructQueue(int[][] people) { List<int[]> ans = new ArrayList<>(); Arrays.sort(people, (a, b) -> a[0] == b[0] ? Integer.compare(a[1], b[1]) : Integer.compare(b[0], a[0])); for (final int[] p : people) ans.add(p[1], p); return ans.stream().toArray(int[][] ::new); } } 1 2 3 4 5 6 7 8 9 10class Solution: def reconstructQueue(self, people: list[list[int]]) -> list[list[int]]: ans = [] people.sort(key=lambda x: (-x[0], x[1])) for p in people: ans.insert(p[1], p) return ans