class Solution {
List<List<Integer>> result = new ArrayList<>();
public List<List<Integer>> permute(int[] nums) {
List<Integer> output = new ArrayList<>();
for(int i = 0;i < nums.length;i++)
output.add(nums[i]);
backTrace(nums.length,0,output);
return result;
}
//回溯函数,参数:数组长度,当前遍历的深度,当前的部分全排列
private void backTrace(int n,int first,List<Integer> output){
if(first == n){
result.add(new ArrayList<>(output));
return;
}
for(int i = first;i < n;i++){
Collections.swap(output,i,first);
backTrace(n,first+1,output);
//一个全排列结束之后,将数组复位,以便下一个全排列使用
Collections.swap(output,i,first);
}
}
}
leetcode46. 全排列
最新推荐文章于 2024-07-25 11:15:54 发布