class Solution {
// 保存结果
List<List<Integer>> res = new ArrayList<>();
// 暂存结果
List<Integer> path = new ArrayList<>();
public List<List<Integer>> permute(int[] nums) {
// 记录元素是否使用过了
boolean[] used = new boolean[nums.length];
backTracking(nums,used);
return res;
}
public void backTracking(int[] nums,boolean[] used){
// 收集结果
if(path.size() == nums.length){
res.add(new ArrayList<>(path));
return;
}
// 遍历整个数组,如果元素没有被使用,就暂存到path中
for(int i=0; i<nums.length; i++){
if(!used[i]){
path.add(nums[i]);
used[i] = true;
// 递归
backTracking(nums,used);
// 回溯
used[i] = false;
path.remove(path.size()-1);
}else{
continue;
}
}
}
}
力扣46题 全排列 Java版
最新推荐文章于 2024-07-18 16:29:57 发布