二刷hot100-46.全排列 回溯算法事先定义好两个list一个作为结果一个作为递归过程中的某一结果path终止条件当path的长度等于数组长度可以收割结果将其放入res当中然后遍历遍历长度与数组长度一致如果used数组对应下标的元素使用过continue未使用过则赋值为1将当前值推入path进行递归递归回来后进行回溯操作先在path里减去当前元素再used对应下标元素赋值为0class Solution { ListListInteger res new ArrayList(); ListInteger path new ArrayList(); public ListListInteger permute(int[] nums) { int[] used new int[nums.length]; f(nums,used); return res; } public void f(int[] nums,int[] used){ if(path.size() nums.length){ res.add(new ArrayList(path)); return; } for(int i 0;i nums.length;i){ if(used[i] 1){ continue; } used[i] 1; path.add(nums[i]); f(nums,used); path.remove(path.size() - 1); used[i] 0; } } }