题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
import java.util.*;
public class Solution {
//全局变量 避免在参数中传递 麻烦
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
public ArrayList<ArrayList<Integer>> permute(int[] num) {
//存在的情况
ArrayList<Integer> list = new ArrayList<>();
dfs(num,list);
return res;
}
public void dfs(int []num , ArrayList<Integer> list){
//如果长度已满 停止递归。
if( list.size() == num.length){
//所有的操作都是操作的list 返回要返回一个新的
res.add(new ArrayList<>(list));
return ;
}
//如果长度每满 则要进行递归操作了
for(int i = 0 ; i < num.length ; i++){
if(list.contains(num[i]))
continue;
list.add(num[i]);
dfs(num,list);
list.remove(list.size()-1);
}
}
}
查看11道真题和解析