LeetCode 39 組合總和

2022-06-23 20:51:09 字數 1148 閱讀 1463

給定乙個無重複元素的陣列 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...