【每日一题】【回溯】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); } } }
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15515205.html