List<Integer> output = newArrayList<>(); for (int num : nums) { output.add(num); } List<List<Integer>> ans = newArrayList<>(); backtrack(output, ans, 0); return ans; }
publicstaticvoidbacktrack(List<Integer> output, List<List<Integer>> ans, int first) { if (first == output.size()) { ans.add(newArrayList<>(output)); } for (inti= first; i < output.size(); i++) { Collections.swap(output, i, first); backtrack(output, ans, first + 1); Collections.swap(output, i, first); } }