题解 | #没有重复项数字的全排列#

没有重复项数字的全排列

https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param num int整型一维数组
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> permute (int[] num) {

        ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> integers = new ArrayList<>();
        boolean[] used = new boolean[num.length];
        int[] array = Arrays.stream(num).sorted().toArray();

        generateNumbers(array,integers,list,used);


        return list;

    }

    private static void generateNumbers(int[] num, ArrayList<Integer> integers, ArrayList<ArrayList<Integer>> list, boolean[] used) {
        if(integers.size()>=num.length){
            list.add(new ArrayList<>(integers));
            return;
        }
        for (int i = 0; i < num.length; i++) {
            if(used[i]||integers.size()>=num.length){
                continue;
            }
            used[i]=true;
            integers.add(num[i]);
            generateNumbers(num,integers,list,used);
            integers.remove(integers.size()-1);
            used[i]=false;
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务