class Solution {
List<List<Integer>> res = new ArrayList<>();
LinkedList<Integer> path = new LinkedList<>();
public List<List<Integer>> permute(int[] nums) {
int[] used = new int[22];
backtracking(used, nums);
return res;
}
public void backtracking(int[] used,int[] nums){
if(path.size() == nums.length){
res.add(new ArrayList(path));
return;
}
for(int i = 0; i < nums.length;i++){
if(used[nums[i] + 10] == 0){
path.add(nums[i]);
used[nums[i] + 10] = 1;
backtracking(used, nums);
used[nums[i] + 10] = 0;
path.removeLast();
}else continue;
}
}
}
穷举,用used数组来记录已经使用过的元素。
本文详细介绍了如何使用回溯法实现整数数组的全排列。通过一个名为`Solution`的类,定义了两个核心方法:`permute`和`backtracking`。`permute`方法初始化结果列表和路径,并调用`backtracking`进行递归遍历。`backtracking`方法利用一个`used`数组记录已使用的元素,避免重复排列。当路径长度等于输入数组长度时,将当前路径添加到结果列表中。整个过程展示了如何穷举所有可能的排列组合。
430

被折叠的 条评论
为什么被折叠?



