給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的數字可以無限制重複被選取。
說明:所有數字(包括 target)都是正整數。
解集不能包含重複的組合。
輸入:candidates = [2,3,6,7], target = 7,
所求解集為:
[ [7],
[2,2,3]
]輸入:candidates = [2,3,5], target = 8,
所求解集為:
[ [2,2,2,2],
[2,3,3],
[3,5]
]
遞迴結束條件為target小於等於0或陣列用完
每次可以選擇使用當前元素dfs(target - candidates[i], combine, i)或不適用當前元素dfs(target, combine, i + 1)
注意元素可以重複使用
時間複雜度o(\(s\)),s為所有可行解長度之和
空間複雜度o(\(target\)),取決於遞迴的棧深度
class solution
/***
* @param candidates 目標陣列
* @param target 剩餘目標數
* @param ans 最終結果列表
* @param combine 已組合列表
* @param i 當前元素下標
*/private void dfs(int candidates, int target, list> ans, listcombine, int i)
// 使用當前元素
if(target - candidates[i] >= 0)
// 跳過當前元素
dfs(candidates, target, ans, combine, i + 1);
}}//class test;
// system.out.println(test.combinationsum(candidates, 7));
// }
//}
LeetCode 39 組合總和
給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...
leetcode39 組合總和
參考 class solution if next num.size target num next 0 邊界條件 return 對於每個元素,有兩種處理方式,選當前元素或者不選當前元素 psol.push back num next 選當前元素 search num,next,psol,targe...
LeetCode39組合總和
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...