原题地址:https://oj.leetcode.com/problems/combination-sum/
题意:
Given a set of candidate numbers (C) and a target
number (T), find all unique combinations
in C where the candidate numbers sums
to T.
The same repeated number may be chosen
from C unlimited number of times.
Note:
- All numbers (including target) will be positive integers.
- Elements in a combination
(a1, a2, …
, ak) must be in non-descending order.
(ie, a1 ≤ a2 ≤
… ≤ ak). - The solution set must not contain duplicate combinations.
For example, given candidate set 2,3,6,7
and
target 7
,
A solution set
is: [7]
[2, 2, 3]
解题思路:穷举出符合条件的组合,我们一般考虑dfs。
代码:
class Solution:
# @param candidates, a list of integers
# @param target, integer
# @return a list of lists of integers
def DFS(self, candidates, target, start, valuelist):
length = len(candidates)
if target == 0:
return Solution.ret.append(valuelist)
for i in range(start, length):
if target < candidates[i]:
return
self.DFS(candidates, target - candidates[i], i, valuelist + [candidates[i]])def combinationSum(self, candidates, target):
candidates.sort()
Solution.ret = []
self.DFS(candidates, target, 0, [])
return Solution.ret
[leetcode]Combination Sum @ Python,布布扣,bubuko.com
时间: 2024-10-03 15:01:30