Slightly different from last problem, but we can still do it using DFS. This solution is very similar with last problem's.
Solution:
# T:O(k*C(n,k)) S:O(k) class Solution: # @param {integer[]} candidates # @param {integer} target # @return {integer[][]} def dfs(self, candidates, target, start, valueList): if target == 0: if valueList not in Solution.ret: Solution.ret.append(valueList) L = len(candidates) for i in xrange(start, L): if target < candidates[i]: return self.dfs(candidates, target - candidates[i], i + 1, valueList + [candidates[i]]) def combinationSum2(self, candidates, target): Solution.ret = [] candidates.sort() self.dfs(candidates, target, 0, []) return Solution.retRun Time: 136 ms
No comments:
Post a Comment