Share
Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), find all unique combinations in candidates where the candidate numbers sums to target.
The same repeated number may be chosen from candidates unlimited number of times.
Note:
- All numbers (including
target) will be positive integers. - The solution set must not contain duplicate combinations.
Example 1:
Input: candidates = [2,3,6,7], target = 7,A solution set is:
[
[7],
[2,2,3]
]
这类题做过几回了,还是用dfs算法,将结果保存在res中。
每次dfs需要提供的参数是index,因为可以重复使用数字,所以for循环都是从index开始。
target记录新的目标数字,path记录用到的数字。
然后注意path+[candidates[i]]这里,外面要有一个括号,否则成了数组加数字了。
如果用append会出现candidates[i]为None的情况。
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
res=[]
l=len(candidates)
def dfs(index,target,path):
if target<0:return
if target==0:
res.append(path)
return
for i in range(index,l):
dfs(i, target-candidates[i], path+[candidates[i]])
dfs(0, target, [])
return res

本文介绍如何使用深度优先搜索(DFS)算法解决组合求和问题,即给定一组候选数字和目标数字,找到所有可能的组合使候选数字之和等于目标数字。文章详细解释了算法的实现过程,包括递归调用、参数设置和结果收集。
&spm=1001.2101.3001.5002&articleId=103750246&d=1&t=3&u=255f6e48dfeb4f068afa41f4208d2302)
683

被折叠的 条评论
为什么被折叠?



