題目描述:給定一個無重複元素的數組 candidates 和一個目標數 target ,找出candidates 中所有可以使數字和爲 target 的組合。candidates 中的數字可以無限制重複被選取。
說明:所有數字(包括 target)都是正整數。解集不能包含重複的組合。
示例 1:
輸入: candidates = [2,3,6,7], target = 7,
所求解集爲:[[7],[2,2,3]]
解題思路:我使用的是笨辦法,找出該數組滿足target的全排列,再插入解集前,判斷該排列是否在解集中存在,如果存在,不插入。全排列的求解查看全排列(Python3)
代碼如下( ̄▽ ̄):
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
self.re = []
self.target = target
self.candidates = candidates
self.sub_combinationSum(target,[])
return self.re
def sub_combinationSum(self,target,temp):
if target<0:
return
if target==0:
temp.sort()
if temp not in self.re:
self.re.append(temp)
else:
for i in self.candidates:
self.sub_combinationSum(target-i,temp+[i])
時間與空間複雜度:
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/probl...