Time:O(n^2) Space:O(n) C++ class Solution { public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { vector<vector<int>> ans; sort(begin(people), end(people), [](const auto& a, const auto& b) { return a[0] == b[0] ? a[1] < b[1] : a[0] > b[0]; }); for (const auto& p : people) ans.insert(begin(ans) + p[1], p); return ans; } }; JAVA class Solution { public int[][] reconstructQueue(int[][] people) { List<int[]> ans = new ArrayList<>(); Arrays.sort(people, (a, b) -> a[0] == b[0] ? a[1] - b[1] : b[0] - a[0]); for (final int[] p : people) ans.add(p[1], p); return ans.toArray(new int[ans.size()][]); } }