其他分享
首页 > 其他分享> > 【每日一题】【回溯】2021年11月5日--全排列

【每日一题】【回溯】2021年11月5日--全排列

作者:互联网

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

 

 注意:List里面的list记得转型【父类引用指向子类对象】

class Solution {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        backtrack(res, nums, new ArrayList<>());
        return res;
    }

    public void backtrack(List<List<Integer>> res, int[] nums, List<Integer> temp) {
        if(temp.size() == nums.length) {
            res.add(new ArrayList<Integer>(temp));
            //为啥res.add(temp);不行,因为要转型,才能符合其类型
            return;
        }
        for(int i = 0; i < nums.length; i ++) {
            if(temp.contains(nums[i])) {
                continue;
            }
            //做选择
            temp.add(nums[i]);
            backtrack(res, nums, temp);
            temp.remove(temp.size() - 1);
        }
    }
}

 

标签:11,temp,nums,--,res,backtrack,List,int,2021
来源: https://www.cnblogs.com/liujinhui/p/15515205.html