当前位置: 首页 > news >正文

【LeetCode刷题】--40.组合总和II

40.组合总和II

image-20231122221405472

本题详解:回溯算法

class Solution {public List<List<Integer>> combinationSum2(int[] candidates, int target) {int len = candidates.length;List<List<Integer>> res = new ArrayList<>();if (len == 0) {return res;}// 关键步骤Arrays.sort(candidates);Deque<Integer> path = new ArrayDeque<>(len);dfs(candidates, len, 0, target, path, res);return res;}/*** @param candidates 候选数组* @param len        冗余变量* @param begin      从候选数组的 begin 位置开始搜索* @param target     表示剩余,这个值一开始等于 target,基于题目中说明的"所有数字(包括目标数)都是正整数"这个条件* @param path       从根结点到叶子结点的路径* @param res*/private void dfs(int[] candidates, int len, int begin, int target, Deque<Integer> path, List<List<Integer>> res) {if (target == 0) {res.add(new ArrayList<>(path));return;}for (int i = begin; i < len; i++) {// 大剪枝:减去 candidates[i] 小于 0,减去后面的 candidates[i + 1]、candidates[i + 2] 肯定也小于 0,因此用 breakif (target - candidates[i] < 0) {break;}// 小剪枝:同一层相同数值的结点,从第 2 个开始,候选数更少,结果一定发生重复,因此跳过,用 continueif (i > begin && candidates[i] == candidates[i - 1]) {continue;}path.addLast(candidates[i]);// 因为元素不可以重复使用,这里递归传递下去的是 i + 1 而不是 idfs(candidates, len, i + 1, target - candidates[i], path, res);path.removeLast();}}
}
http://www.lryc.cn/news/239586.html

相关文章:

  • mysql面试内容点
  • msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法
  • 数字图像处理(冈萨雷斯)学习笔记
  • MES系统管理范围及标准
  • vscode运行dlv报错超时
  • 【Leetcode合集】1. 两数之和
  • 使用Java解决快手滑块验证码
  • 瑞吉外卖Day06
  • 从暗黑3D火炬之光技能系统说到-Laya非入门教学一~资源管理
  • for,while,until语句
  • Apache POI简介
  • 基于Qt的UDP通信、TCP文件传输程序的设计与实现——QQ聊天群聊
  • 【C++】:STL中的string类的增删查改的底层模拟实现
  • 【论文阅读笔记】Supervised Contrastive Learning
  • 数据库管理工具,你可以用Navicat,但我选DBeaver!
  • 数据库的三范式(Normalization)
  • 【代码随想录】刷题笔记Day32
  • LeetCode算法题解(动态规划,背包问题)|LeetCode416. 分割等和子集
  • Java Class 类文件格式看这一篇就够了
  • 『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统
  • [github配置] 远程访问仓库以及问题解决
  • mysql5.6 删除用户/ drop user
  • VMware三种网络模式
  • Java虚拟机(JVM)的调优技巧和实战2
  • 2020年下半年试题一:论信息系统项目的成本管理
  • 9. 回文数 --力扣 --JAVA
  • ChainLight zkSync Era漏洞揭秘
  • 01背包与完全背包学习总结
  • 基于单片机的公共场所马桶设计(论文+源码)
  • 注解案例:山寨Junit与山寨JPA