forked from alqamahjsr/Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path39_Combination_Sum.py
25 lines (23 loc) · 1.03 KB
/
39_Combination_Sum.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution(object):
def combinationSum(self, candidates, target):
"""
:type candidates: List[int]
:type target: int
:rtype: List[List[int]]
"""
allCandidates = []
runningCandidate = []
self.generateCandidates(candidates, runningCandidate, target, allCandidates)
return allCandidates
def generateCandidates(self, originalCandidates, runningCandidate, target, allCandidates):
if sum(runningCandidate) >= target:
finalCandidate = [candidate for candidate in runningCandidate]
finalCandidate.sort()
if sum(runningCandidate) == target and finalCandidate not in allCandidates:
allCandidates.append(finalCandidate)
return # backtrack
for i in range(len(originalCandidates)):
choice = originalCandidates[i]
runningCandidate.append(choice)
self.generateCandidates(originalCandidates, runningCandidate, target, allCandidates)
runningCandidate.pop()