题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
import java.util.*; public class Solution { ArrayList<ArrayList<Integer>> res2=new ArrayList<ArrayList<Integer>>(); public ArrayList<ArrayList<Integer>> permute(int[] num) { // 存一种排列 LinkedList<Integer> list = new LinkedList<>(); // 递归进行 backTrack(num,list); return this.res2; } public void backTrack(int[] num, LinkedList<Integer> list){ // 当list中的长度等于数组的长度,则证明此时已经找到一种排列了 if(list.size() == num.length){ // add进返回结果集中 res2.add(new ArrayList<>(list)); return; } // 遍历num数组 for(int i = 0; i < num.length; i++){ // 若当前位置中的数已经添加过了则跳过 if(list.contains(num[i])) continue; // 选择该数 list.add(num[i]); // 继续寻找 backTrack(num,list); // 撤销最后一个 list.removeLast(); } } }