46. 全排列

思路: 肯定是回溯算法,当递归深度 == 数组长度时,说明所有数字都已经使用完了。但是需要加一个used数组,表示当前位置的数字已经使用过,避免出现重复数据
class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> res = new ArrayList<>();boolean[] used = new boolean[nums.length];recall(nums,0,res , new ArrayList<>(),used);return res;}public void recall(int[] nums ,int dept , List<List<Integer>> res , List<Integer> arr , boolean[]used){if(dept == nums.length){res.add(new ArrayList(arr));}for(int i = 0 ;i < nums.length ; i++){if(!used[i]){arr.add(nums[i]);used[i] = true ;recall(nums,dept+1 , res , arr , used);used[i] = false;arr.remove(arr.size() -1);}}}}
