组合总和
# 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
#
# candidates 中的数字可以无限制重复被选取。
#
# 说明:
#
#
# 所有数字(包括 target)都是正整数。
# 解集不能包含重复的组合。
#
#
# 示例 1:
#
# 输入:candidates = [2,3,6,7], target = 7,
# 所求解集为:
# [
# [7],
# [2,2,3]
# ]
方法:回溯
def combinationSum(nums, target): res = [] if len(nums) == 0: return res # 返回空list nums.sort() # 来一次排序,便于后续处理 dfs(nums, [], target, 0, res) # 深度优先遍历,直接到底,递归回溯 return res def dfs(nums, sublist, target, last, res): # last表示sublist的最后一个元素 if target == 0: res.append(sublist) if target < nums[0]: # 剪枝,小于第一个元素值直接返回 return for each in nums: # 数字可以重复使用,每次都再次循环遍历 if each > target: # 剪枝,当前数字如果大于目标值,后面无需遍历 return if each < last: # 剪枝操作:若当前数值小于当前sublist的最后一个元素,则继续遍历,防止出现重复解决方案,如[2,2,3],[3,2,2] continue dfs(nums, sublist+[each], target-each, each, res)
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-06-30 关键词提取新方法-YAKE! Collection-independent Automatic Keyword Extractor