直接回溯即可

没有重复项数字的所有排列

http://www.nowcoder.com/questionTerminal/4bcf3081067a4d028f95acee3ddcd2b1

回溯问题,注意从回溯到上一层时,要恢复列表的状态

    ArrayList<ArrayList<Integer>> resList = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> permute(int[] num) {

        if (num == null){
            return null;
        }
        ArrayList<Integer> curlist = new ArrayList<>();
        findPerm(num,curlist);

        return resList;
    }

    private void findPerm(int[] num, List<Integer> list){

        if (list.size() == num.length){

            resList.add(new ArrayList<>(list));
            return;
        }

        for (int i = 0; i < num.length; i++) {

            if (!list.contains(num[i])){

                list.add(num[i]);
                findPerm(num,list);
                list.remove(list.size() - 1);
            }

        }
    }
全部评论

相关推荐

投递网易雷火等公司8个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务