class Solution {
List<List<Integer>> result = new ArrayList<>();// 存放符合条件结果的集合
LinkedList<Integer> path = new LinkedList<>();// 用来存放符合条件结果
boolean[] used;
public List<List<Integer>> permute(int[] nums) {
if (nums.length == 0){
return result;
}
used = new boolean[nums.length];
permuteHelper(nums);
return result;
}
private void permuteHelper(int[] nums){
if (path.size() == nums.length){
result.add(new ArrayList<>(path));
return;
}
for (int i = 0; i < nums.length; i++){
if (used[i]){
continue;
}
used[i] = true;
path.add(nums[i]);
permuteHelper(nums);
path.removeLast();
used[i] = false;
}
}
}
代码随想录——46. 全排列
最新推荐文章于 2024-10-31 16:16:13 发布
该代码实现了一个使用回溯算法的函数permute,用于找出整数数组的所有可能排列组合。它通过一个辅助函数permuteHelper递归地添加未使用的数字到当前路径,并将完成的排列添加到结果集合中。在每次递归调用后,都会回溯撤销选择,以便尝试其他可能性。
摘要由CSDN通过智能技术生成