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

LeeCode题库第四十题

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]
]

提示:

  • 1 <= candidates.length <= 100
  • 1 <= candidates[i] <= 50
  • 1 <= target <= 30


问题描述

        这题类似于题库第三十九题,但是要求解集中不能出现重复的组合,于是排序之后需要判断此时递归到的元素是否和前一个元素相等,i与start相等的时候,当前i为第一层级即使与前一个元素相等也不需跳过,之后不断进行递归和恢复现场即可。

class Solution:
    def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
        def backtrack(state:List[int],target:int,choices:List[int],start:int,res:List[List[int]]):
            if target==0:
                res.append(list(state))
                return
            for i in range(start,len(candidates)):
                if target-candidates[i]<0:
                    break
                if i>start and choices[i]==choices[i-1]:
                    continue
                state.append(choices[i])
                backtrack(state,target-candidates[i],choices,i+1,res)
                state.pop()
        state=[]
        candidates.sort()
        start=0
        res=[]
        backtrack(state,target,candidates,start,res)
        return res



                
                
            

      
        

        本题提交情况。

 

        以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光! 

http://www.dtcms.com/a/46572.html

相关文章:

  • 【数据结构】栈与分治递归||斐波那契问题和归并算法||递归实现||顺序栈和链栈的区分
  • 使用DeepSeek+KIMI生成高质量PPT
  • chroma在langchain中的使用 (Document Question Answering)
  • 蓝桥杯试题:二分查找
  • 两台虚拟机配置本地源以及使用ftp服务进行部署
  • React生态、Vue生态与跨框架前端解决方案
  • 【大模型】Ollama本地部署DeepSeek大模型:打造专属AI助手
  • 2025.3.1面试总结
  • Linux操作系统5- 补充知识(可重入函数,volatile关键字,SIGCHLD信号)
  • (原创)用python语言基于paddleocr构建批量识别实现纸质和电子的增值税专用发票程序
  • 3.2-A-L1-2-第15讲-冒泡排序 mochen @denglexi
  • 实验-基于ESP32-S3的敏捷快速原型开发
  • 创建一个MCP服务器,并在Cline中使用,增强自定义功能。
  • 形象生动讲解Linux 虚拟化 I/O
  • 【ComfyUI】[进阶工作流] 高级采样器与Refiner的工作流优化
  • python django
  • Nginx配置详解
  • 加入二极管的NE555 PWM 电路
  • 使用python实现线性回归
  • 修改DOSBox的窗口大小
  • 启动你的RocketMQ之旅(四)-Producer启动和发送流程(下)
  • 国产开源AI平台Cherry Studio详解:联网搜索升级与ChatBox对比指南
  • spring.profiles.active和spring.profiles.include的使用及区别说明
  • 基于html的俄罗斯方块小游戏(附程序)
  • MCAL-I/O驱动
  • 考研408数据结构第三章(栈、队列和数组)核心易错点深度解析
  • 01_NLP基础之文本处理的基本方法
  • 附录-Python — 包下载缓慢,配置下载镜像
  • 河南理工XCPC萌新选拔赛
  • SEO长尾词优化进阶法则