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

LeeCode题库第三十九题

39.组合总和 

项目场景:

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

示例 1:

输入:candidates = [2,3,6,7], target = 7
输出:[[2,2,3],[7]]
解释:
2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。
7 也是一个候选, 7 = 7 。
仅有这两种组合。

示例 2:

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

示例 3:

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

提示:

  • 1 <= candidates.length <= 30
  • 2 <= candidates[i] <= 40
  • candidates 的所有元素 互不相同
  • 1 <= target <= 40


问题描述

        本题可以利用递归,先将candidate数组排序,递归过程中,如果剩下的数字left为0则添加此时的路径,如果此时i已经为candidate数组最后一个元素或者剩下的数字left小于此时的candidate数组元素,则回退return。递归过程中先不断递归使得candidate最大,如果符合则将此时对应candidate数组的元素加入到path中,继续递归left,否则就pop掉此时的元素,继续进行遍历。

class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:       candidates.sort()ans=[]path=[]def dfs(i:int,left:int)->None:if left==0:ans.append(path.copy())returnif i==len(candidates) or left<candidates[i]:return dfs(i+1,left)path.append(candidates[i])dfs(i,left-candidates[i])path.pop()dfs(0,target)return ans

        本题提交情况。

 

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

http://www.lryc.cn/news/545447.html

相关文章:

  • 卫星网络仿真平台:IPLOOK赋能空天地一体化通信新生态​
  • (十一)基于vue3+mapbox-GL实现模拟高德实时导航轨迹播放
  • 计算机面试项目经历描述技巧
  • 132. 分割回文串 II
  • 【每日学点HarmonyOS Next知识】全局调整字体、h5选择框无法取消选中、margin不生效、Length转换为具体值、Prop和link比较
  • 九、Spring Boot:自动配置原理
  • (动态规划 最长重复子数组)leetcode 718
  • SFP+(Enhanced Small Form-factor Pluggable)详解
  • 计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型音乐推荐系统 音乐数据分析 音乐可视化 音乐爬虫 知识图谱 大数据毕业设计
  • Deepseek对ChatGPT的冲击?
  • 【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南
  • 极客大学 java 进阶训练营怎么样,图文详解
  • 机器人学习模拟框架 robosuite (3) 机器人控制代码示例
  • 玩转python: 几个案例-掌握贪心算法
  • 腾讯集团软件开发-后台开发方向内推
  • 哈希碰撞攻防战——深入浅出Map/Set的底层实现
  • 深度解析Ant Design Pro 6开发实践
  • 用大白话解释基础框架Spring Boot——像“装修套餐”一样简单
  • 第十三届蓝桥杯大赛软件赛决赛C/C++ 大学 B 组
  • java后端开发day25--阶段项目(二)
  • 岚图汽车2月销售8013辆,岚图知音硬核引领智能出行
  • 【CSS—前端快速入门】CSS 常用样式
  • 【软考-架构】1.3、磁盘-输入输出技术-总线
  • Linux软连接与时区日期
  • (十)Mapbox GL JS 中点击 Marker 时获取与该 Marker 相关的自定义数据的解决办法
  • PyCharm怎么集成DeepSeek
  • (七)消息队列-Kafka 序列化avro(传递)
  • js基础二
  • WSBDF レクチア 定义2 引理3 wsbdf的乘子
  • Qt之QStateMachine等待