1class Solution {2List<List<Integer>> res = new LinkedList<>();34public List<List<Integer>> permute(int[] nums) {5ArrayList<Integer> list = new ArrayList<>();6boolean[] visited = new boolean[nums.length];78backTrack(nums, list, visited);9return res;10}1112private void backTrack(int[] nums, ArrayList<Integer> list, boolean[] visited) {13if (list.size() == nums.length) {14res.add(new ArrayList(list));15return;16}17for (int i = 0; i < nums.length; i++) {18if (!visited[i]) {19visited[i] = true;20list.add(nums[i]);21backTrack(nums, list, visited);22visited[i] = false;23list.remove(list.size() - 1);24}25}26}27}