给定一个不含重复数字的数组nums
,返回其所有可能的全排列 。你可以按任意顺序返回答案。
输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 输入:nums = [0,1] 输出:[[0,1],[1,0]] 输入:nums = [1] 输出:[[1]]
class Solution { List<Integer> temp = new ArrayList<Integer>(); List<List<Integer>> ans = new ArrayList<List<Integer>>(); public List<List<Integer>> permute(int[] nums) { boolean[] used = new boolean[nums.length]; backtracking(nums,used); return ans; } private void backtracking(int[] nums,boolean[] used) { if(temp.size() == nums.length) { ans.add(new ArrayList<>(temp)); return; } // 遍历 for (int i = 0; i < nums.length; i++) { if(used[i] == false) { temp.add(nums[i]); used[i] = true; } else continue; backtracking(nums,used); temp.remove(temp.size()-1); used[i] = false; } } }