/** * LeetCode 46 https://leetcode.com/problems/permutations/submissions/ */ class Solution { public List> permute(int[] nums) { List> res = new LinkedList<>(); LinkedList track = new LinkedList<>(); boolean[] used = new boolean[nums.length]; backtrack(nums,track,used, res); return res; } void backtrack(int[] nums, LinkedList track, boolean[] used, List> res) { if (track.size() == nums.length) { res.add(new LinkedList(track)); return; } for (int i = 0; i < nums.length; i++) { if (used[i]) { continue; } track.add(nums[i]); used[i] = true; backtrack(nums, track, used, res); track.removeLast(); used[i] = false; } } }