141 - 39 组合总和
题目
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。
解集不能包含重复的组合。
示例 1:
输入: candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3] ]
示例 2:
输入: candidates = [2,3,5], target = 8, 所求解集为: [ [2,2,2,2], [2,3,3], [3,5] ]
解答
解法1
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
if len(candidates) == 0:
return []
res = []
path = []
candidates.sort()
def helper(candidates, begin, target):
if target == 0:
res.append(path[:])
for index in range(begin, len(candidates)):
residue = target - candidates[index]
if residue < 0:
break
path.append(candidates[index])
helper(candidates, index, residue)
path.pop()
helper(candidates, 0, target)
return resRuntime: 48 ms, faster than 99.49% of Python3 online submissions for Combination Sum.
Memory Usage: 12.8 MB, less than 100.00% of Python3 online submissions for Combination Sum.
Runtime: 76 ms, faster than 64.33% of JavaScript online submissions for Combination Sum.
Memory Usage: 36.7 MB, less than 66.67% of JavaScript online submissions for Combination Sum.
Runtime: 4 ms, faster than 87.04% of Go online submissions for Combination Sum.
Memory Usage: 4 MB, less than 100.00% of Go online submissions for Combination Sum.
解法2
Runtime: 48 ms, faster than 99.49% of Python3 online submissions for Combination Sum.
Memory Usage: 12.9 MB, less than 100.00% of Python3 online submissions for Combination Sum.
Last updated