题目:
解析:
这题设计递归函数,主要把看如何剪枝
代码:
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
相关推荐
豆浩宇7 分钟前
Conda环境隔离和PyCharm配置,完美同时运行PaddlePaddle和PyTorch一只鱼^_9 分钟前
牛客周赛 Round 108小刘的AI小站1 小时前
leetcode hot100 二叉搜索树自信的小螺丝钉1 小时前
Leetcode 876. 链表的中间结点 快慢指针红豆怪怪1 小时前
[LeetCode 热题 100] 32. 最长有效括号愚润求学1 小时前
【贪心算法】day6AI 嗯啦2 小时前
计算机的排序方法l12345sy2 小时前
Day23_【机器学习—聚类算法—K-Means聚类 及评估指标SSE、SC、CH】_Coin_-2 小时前
算法训练营DAY58 第十一章:图论part08scx201310042 小时前
P13929 [蓝桥杯 2022 省 Java B] 山 题解