39 組合總和

2022-06-26 13:24:10 字數 1608 閱讀 6193

給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。

candidates 中的數字可以無限制重複被選取。

說明:

** 所有數字(包括 target)都是正整數。**

解集不能包含重複的組合。

示例 1:

輸入: candidates = [2,3,6,7], target = 7,

所求解集為:

[ [7],

[2,2,3]

] 示例 2:

輸入: candidates = [2,3,5], target = 8,

所求解集為:

[ [2,2,2,2],

[2,3,3],

[3,5]

]

/**

* 給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。

* candidates 中的數字可以無限制重複被選取。

* @param candidates 無重複元素的陣列

* @param target 目標數

* @return 結果集合

*/public list> combinationsum(int candidates, int target)

return result;

}/*** 搜尋方法

* @param result 結果存放集合

* @param temp 臨時結果存放集合

* @param tempsum 臨時集合中的數總和

* @param candidates 待搜尋陣列

* @param target 目標數

*/private void searchcandidatestosum(list> result, listtemp, int tempsum, int candidates, int target)

/*** 當總和等於目標數時

*/if( tempsum == target )

return;

}/**

* 每次加入乙個數字,然後進行下一層的搜尋

* 結束時再將該數字刪除,進行下一次的搜尋

*/for (integer i : candidates)

}/**

* 查詢result中是否有temp集合

* @param result 被查集合

* @param temp 要查的集合

* @return 如果存在返回false 不存在返回true

*/private boolean findresult(list> result, listtemp)

}/**

* 若newitem的大小為0時

* 說明newitem與temp的內容完全相同

* 則返回false

*/if( newitem.size() == 0 )}}

return true;

}

39 組合總和

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2...

39 組合總和

給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...

39 組合總和

給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 輸入 candida...