题目:
解析:
这题设计递归函数,主要把看如何剪枝
代码:
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
相关推荐
FirstFrost --sy15 分钟前
数据结构之二叉树森焱森25 分钟前
垂起固定翼无人机介绍搂鱼11451444 分钟前
(倍增)洛谷 P1613 跑路/P4155 国旗计划Yingye Zhu(HPXXZYY)1 小时前
Codeforces 2021 C Those Who Are With Us无聊的小坏坏2 小时前
三种方法详解最长回文子串问题长路 ㅤ 2 小时前
Java后端技术博客汇总文档秋说2 小时前
【PTA数据结构 | C语言版】两枚硬币qq_513970443 小时前
力扣 hot100 Day37不見星空3 小时前
leetcode 每日一题 1865. 找出和为指定值的下标对我爱Jack3 小时前
时间与空间复杂度详解:算法效率的度量衡