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

没有重复项数字的全排列

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;
        }
    }
}

全部评论

相关推荐

12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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