首页 > 其他分享 >LeetCode:40.组合总和II

LeetCode:40.组合总和II

时间:2025-01-14 21:57:53浏览次数:3  
标签:index target int res 40 II candidates path LeetCode

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode:40.组合总和II
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用 一次 。
注意:解集不能包含重复的组合。
示例 1:
输入: candidates = [10,1,2,7,6,1,5], target = 8,
输出:
[
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]
示例 2:
输入: candidates = [2,5,2,1,2], target = 5,
输出:
[
[1,2,2],
[5]
]

注意这里的去重的逻辑,需要再树层上进行去重,而不是树枝上去重,path中的元素是可以重复的,而res里面的元素不能重复

	public List<List<Integer>> combinationSum2(int[] candidates, int target) {
        Arrays.sort(candidates);
        List<List<Integer>> res = new ArrayList<>();
        backtracking(candidates, target, 0, 0, new ArrayList<>(), res);
        return res;
    }

    private void backtracking(int[] candidates, int target, int index, int sum, List<Integer> path,
            List<List<Integer>> res) {
        if (sum == target) {
            res.add(new ArrayList(path));
            return;
        }
        for (int i = index; i < candidates.length; i++) {
            // 注意这里是i > index(进行树层去重) 而不是i > 0(会少[1,1,6]这种情况)
            if (i > index && candidates[i] == candidates[i - 1])
                continue;
            if (sum + candidates[i] > target)
                break;
            path.add(candidates[i]);
            backtracking(candidates, target, i + 1, sum + candidates[i], path, res);
            path.removeLast();
        }
    }

标签:index,target,int,res,40,II,candidates,path,LeetCode
From: https://blog.csdn.net/xiaoshiguang3/article/details/145148527

相关文章

  • dll文件找不到了,msvcp140_ATOMIC_WAIT.dll丢失的解决方法
    在日常使用电脑的过程中,你是否遇到过这样的烦心事:满心欢喜地打开一款心仪的软件,或是准备投身紧张刺激的游戏世界时,突然弹出一个报错窗口,无情地宣告“msvcp140_ATOMIC_WAIT.dll丢失”,紧接着软件闪退,或是根本无法启动,让你的热情瞬间被浇灭。这一小小的dll文件缺失,却如同“拦......
  • LeetCode - #183 Swift 实现查询未下订单的客户
    网罗开发(小红书、快手、视频号同名)  大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、HarmonyOS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源......
  • 【LeetCode 刷题】二分搜索
    此博客作为《代码随想录》的学习笔记,主要内容为二分搜索法及相关题目解析。文章目录704.二分查找35.搜索插入位置34.在排序数组中查找元素的第一个和最后一个位置69.x的平方根367.有效的完全平方数以下所有二分法算法均基于左闭右闭区间704.二分查找LeetCode......
  • 如何在不重启IIS的情况下回收IIS程序池?
    问题描述:在服务器管理中,有时需要回收IIS程序池以释放资源或解决某些问题,但又不想重启整个IIS服务。请问如何在不重启IIS的情况下回收IIS程序池?具体操作步骤是什么?如果通过远程桌面连接到服务器进行操作,需要注意哪些事项?答案:您好,回收IIS程序池而不重启IIS是一个常见的操作,尤其是......
  • 40-《黄秋英》
    黄秋英黄秋英(学名:CosmossulphureusCav.)是菊科秋英属植物。一年生草本,高1.5-2米,叶2-3次羽状深裂,裂片披针形至椭圆形,头状花序2.5-5厘米,花序梗长6-25厘米,舌状花橘黄色或金黄色,先端具3齿;管状花黄色。瘦果具粗毛,连同喙长达18-25毫米,喙纤弱。花期6-7月。 形态特征 黄秋英......
  • 【代码随想录】刷题记录(102)-不同路径 II
    题目描述:给定一个 mxn 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m-1][n-1])。机器人每次只能向下或者向右移动一步。网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的移动路径中不能包含 任何 有......
  • springboot助农商城小程序-计算机设计毕业源码34035
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1用户登录流程2.2.2 数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析2.5本章小结3 系......
  • leetcode 刷题
    现有一个记作二维矩阵 frame 的珠宝架,其中 frame[i][j] 为该位置珠宝的价值。拿取珠宝的规则为:只能从架子的左上角开始拿珠宝每次可以移动到右侧或下侧的相邻位置到达珠宝架子的右下角时,停止拿取注意:珠宝的价值都是大于0的。除非这个架子上没有任何珠宝,比如 frame=[......
  • 如何在虚拟主机或IIS中增加JSON扩展名的MIME类型?
    在虚拟主机或IIS中增加JSON扩展名的MIME类型是确保服务器正确处理JSON文件的关键步骤。以下是针对IIS7及以上版本的具体操作方法和注意事项,帮助您顺利完成设置。操作步骤打开IIS管理器在服务器上启动IIS管理器,连接到目标站点。选择站点在左侧树形结构中,展开服务器节点......
  • 如何在虚拟主机或 IIS 中增加 JSON 扩展名的 MIME 类型?
    在虚拟主机或IIS中增加JSON扩展名的MIME类型,可以按照以下步骤进行:IIS7.0及以上版本打开IIS管理器:在服务器上打开IIS管理器。选择站点:在左侧树状结构中选择要配置的站点。进入MIME类型设置:在右侧操作面板中找到“MIME类型”并点击进入。添加......