题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
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); } } }