题目:
解析:
这题设计递归函数,主要把看如何剪枝
代码:
javaclass Solution { private List<List<Integer>> ret; private List<Integer> path; private boolean[] check; public List<List<Integer>> permuteUnique(int[] nums) { ret = new ArrayList<>(); path = new ArrayList<>(); check = new boolean[nums.length]; Arrays.sort(nums);// dfs(nums,0); return ret; } //pos是决策树层数 private void dfs(int[] nums,int pos){ if(pos == nums.length){ ret.add(new ArrayList<>(path)); return; } for(int i = 0; i < nums.length; i++){ //不合法分支剪枝 if(check[i] == true || i != 0 && nums[i] == nums[i-1] && check[i-1] == false) continue; if(check[i] == false){ path.add(nums[i]); check[i] = true; dfs(nums,pos+1); //恢复现场 path.remove(path.size()-1); check[i] = false; } } } }
穷举vs暴搜vs深搜vs回溯vs剪枝专题一>全排列II
robin_suli2024-12-24 15:27
相关推荐
天乐敲代码16 分钟前
JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代十年一梦实验室20 分钟前
【Eigen教程】矩阵、数组和向量类(二)Kent_J_Truman21 分钟前
【子矩阵——优先队列】快手技术2 小时前
KwaiCoder-23BA4-v1:以 1/30 的成本训练全尺寸 SOTA 代码续写大模型一只码代码的章鱼2 小时前
粒子群算法 笔记 数学建模小小小小关同学2 小时前
【JVM】垃圾收集器详解圆圆滚滚小企鹅。2 小时前
刷题笔记 贪心算法-1 贪心算法理论基础Kacey Huang2 小时前
YOLOv1、YOLOv2、YOLOv3目标检测算法原理与实战第十三天|YOLOv3实战、安装Typoraeguid_13 小时前
JavaScript图像处理,常用图像边缘检测算法简单介绍说明带多刺的玫瑰3 小时前
Leecode刷题C语言之收集所有金币可获得的最大积分