LeetCode39 組合總和

2022-06-07 16:12:10 字數 963 閱讀 8007

☆☆☆**: 排序剪枝後效率更高 ~

class

solution

//難點是如何去除重複的組合

//(每次i從0開始搜尋) 去重前 : [ [2,2,2,2],[2,3,3],[3,2,3],[3,3,2],[3,5],[5,3] ]

//(每次 i 從index開始搜尋)去重後 : [ [2,2,2,2],[2,3,3],[3,5] ]

//優化前: 4ms

//優化後(排序+剪枝):2ms

private

void dfs(int nums,int start, int target, listlist, list>res)

for (int i = start; i < nums.length; i++)

}/*** 回溯寫法2:做選擇

* 優化前:4ms

* 優化(排序+剪枝):2ms

*/private

void dfs1(int nums, int index, int target, listlist, list>res)

//if (target < 0) return;

//優化前剪枝

if (target < nums[index]) return; //

優化後剪枝 candidates排序後,target小於當前的值就不用往後算了

list.add(nums[index]);

dfs1(nums, index, target -nums[index], list, res);

list.remove(list.size() - 1);

dfs1(nums, index + 1, target, list, res);}}

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...