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

【leetcode100】组合总和Ⅱ

1、题目描述

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用 一次 。

注意:解集不能包含重复的组合。 

示例 1:

输入: candidates = [2,5,2,1,2], target = 5,
输出:
[
[1,2,2],
[5]
]

2、初始思路

2.1 思路

根据题目要求,每个数字在每个组合里只能用一次,也就是说,在每一支上,candidates中的数字都能取,但只能取一次;而且结果里不能有重复的组合,也就是说在每一层,当一个数取过之后,在candidates中与之数值相同的数字都不能再选取。因此,可以将本题的树状图抽象为:

2.2 代码

class Solution:
    def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
        candidates.sort()
        res = []
        path = []
        def backtracking(candidates, target, startIndex):
            if target == 0:
                res.append(path.copy())
                return
            for i in range(startIndex, len(candidates)):
                #当取得数大于target时,说明该组合已经不成立,可直接跳出循环
                if candidates[i] > target:
                    break
                #当一层中已经去过相同数值后,该数值不再被选取;但要注意在同一支中可从candidates中任选不重复的数值,因此需要用i > startIndex加以限制
                if i > startIndex and candidates[i] == candidates[i-1]:
                    continue
                path.append(candidates[i])
                backtracking(candidates, target - candidates[i], i+1 )
                path.pop()
        backtracking(candidates, target, 0)
        return res

文章转载自:

http://nPBvWfOT.fjntg.cn
http://w8A6ipn8.fjntg.cn
http://m9ZbD9qA.fjntg.cn
http://dwnWXon8.fjntg.cn
http://oJyMeAbw.fjntg.cn
http://8aVsioB7.fjntg.cn
http://UQX3n2Jc.fjntg.cn
http://GuVAEGh9.fjntg.cn
http://aCECODnF.fjntg.cn
http://wy4NBiLO.fjntg.cn
http://CK6UJmwD.fjntg.cn
http://PsPXgl32.fjntg.cn
http://mdpZqQ8K.fjntg.cn
http://8RgU22Xa.fjntg.cn
http://NkiPKAx9.fjntg.cn
http://VY1AUsRu.fjntg.cn
http://G2iObPt7.fjntg.cn
http://Al85Fu4e.fjntg.cn
http://PRjljzZF.fjntg.cn
http://RAlMr49W.fjntg.cn
http://WghOIWiK.fjntg.cn
http://kwo1j8WU.fjntg.cn
http://wPZl79O4.fjntg.cn
http://rFDSJPsY.fjntg.cn
http://1aZ7tv1k.fjntg.cn
http://Dyyzsrqh.fjntg.cn
http://Lj7NXLF5.fjntg.cn
http://gZ23OasJ.fjntg.cn
http://hB7YkcI1.fjntg.cn
http://l0NoaSJv.fjntg.cn
http://www.dtcms.com/a/59834.html

相关文章:

  • 清华大学08-使用DeepSeek赋能家庭教育【文末附下载地址】
  • Python绘制数据分析中经典的图形--列线图
  • 【接口负载】✈️整合 Resilience4j 指定接口负载,避免过载
  • 蓝牙4.0BLE协议栈中串口应用详解
  • [HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(1)知识基础
  • Ollama在AutoDL部署,CPU服务器做代理,实践中
  • 基于SpringBoot的智能问诊系统设计与隐私保护策略
  • ChatGPT使用经验分享
  • Android MVC、MVP、MVVM三种架构的介绍和使用。
  • 蓝桥杯 C++ b组 积木画深度解析
  • 【算法day4】最长回文子串——动态规划方法
  • JAVA通过SSE实现消息推送
  • 【Elasticsearch入门到落地】9、hotel数据结构分析
  • SAP监控体系和机制
  • 【Go每日一练】统计字符出现的次数
  • 【python爬虫】酷狗音乐爬取练习
  • Manus详细介绍
  • 复现 MODEST 机器人抓取透明物体 单目 ICRA 2025
  • 【编译器】VSCODE编译C语言
  • 如是APP:AI精准匹配需求,信用体系重构信任,双轮驱动打造无套路电商
  • 将本地已有的项目上传至仓库
  • 第七章:go 切片
  • 对开源VLA sota π0的微调——如何基于各种开源数据集、以及你自己的私有数据集微调π0(含我司的微调实践)
  • 数据结构(回顾)
  • 深度学习算法实战——风格迁移(主页有源码)
  • 开发指南107-谷歌内核浏览器滚动条设置
  • 开发过程中遇到的问题记录
  • 011---UART协议的基本知识(一)
  • Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU
  • 计算机视觉算法实战——野猪检测(主页有源码)