前言
我需要补充一些烧鸡100和剑指offer没有的题目
回溯
47. 全排列 II - 力扣(LeetCode)
主要是掌握去重的套路
排序
visit[]
if(i>0&&nums[i]==nums[i-1]&&!visit[i-1])
class Solution { List<Integer>path=new ArrayList<>(); ArrayList<List<Integer>>res=new ArrayList<>();//设为全局变量就不用传递参数了 public List<List<Integer>> permuteUnique(int[] nums) { Arrays.sort(nums); boolean[]used=new boolean[nums.length]; back(nums,used); return res; } public void back(int[]nums,boolean[]used) { if(path.size()==nums.length) { res.add(new ArrayList<>(path)); return; } for(int i=0;i<nums.length;i++) { if(used[i]==true) { continue; } if(i>0&&nums[i]==nums[i-1]&&!used[i-1]) { continue; } path.add(nums[i]); used[i]=true; back(nums,used); path.remove(path.size()-1); used[i]=false; } } }
具体为什么,建议看傻逼卡尔的讲解