题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型一维数组 * @return int整型ArrayList<ArrayList<>> */ public static ArrayList<ArrayList<Integer>> permute (int[] num) { // write code here ArrayList<ArrayList<Integer>> result = new ArrayList<>(); boolean[] selected = new boolean[num.length]; makeList(num, new ArrayList<>(),selected,result); return result; } public static void makeList(int[] num, ArrayList<Integer> curList, boolean[] selected,ArrayList<ArrayList<Integer>> result){ ArrayList<Integer> localList = new ArrayList<>(curList); if(localList.size() == num.length){ result.add(localList); return; } for(int i=0;i<num.length;i++){ if(!selected[i]){ //以数组中某一个数开始递归 localList.add(num[i]); selected[i] = true; makeList(num,localList,selected,result); selected[i] = false; //移出这个递归的数,下次循环,再选另一个数开始递归 localList.remove(localList.size()-1); } } } }