Leetcode演算法Java全解答--39. 組合總和
Leetcode演算法Java全解答–39. 組合總和
題目
給定一個無重複元素的陣列 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] ]
想法
// TODO
結果
// TODO
總結
// TODO
程式碼
我的答案
public List<List<Integer>> combinationSum(int[] candidates, int target) { List<List<Integer>> resultList = new ArrayList<>(); List<Integer> result = new ArrayList<>(); Arrays.sort(candidates); // 剪枝 dfs(candidates, resultList, result, 0, target); return resultList; } private void dfs(int[] candidates, List<List<Integer>> resultList, List<Integer> result, int start, int target) { if (target < 0){ // target不符合 return; }else if (target == 0){ // target符合 resultList.add(new ArrayList<>(result)); }else { // 繼續進行數的查詢 for (int i = start; i < candidates.length; i++){ result.add(candidates[i]); dfs(candidates, resultList, result, i, target - candidates[i]); result.remove(result.size() - 1); // 數查詢完後要進行回溯 } } }
大佬們的答案
class Solution { public List<List<Integer>> combinationSum(int[] candidates, int target) { Arrays.sort(candidates); List<List<Integer>> result = new ArrayList<List<Integer>>(); getResult(result, new ArrayList<Integer>(), candidates, target, 0); return result; } private void getResult(List<List<Integer>> result, List<Integer> cur, int candidates[], int target, int start) { if (target > 0) { for (int i = start; i < candidates.length && target >= candidates[i]; i++) { cur.add(candidates[i]); getResult(result, cur, candidates, target - candidates[i], i); cur.remove(cur.size() - 1); }//for }//if else if (target == 0) { result.add(new ArrayList<Integer>(cur)); }//else if } }
測試用例
其他
“大佬們的答案” 標籤來自leetcode,侵權請聯絡我進行刪改
如有疑問請聯絡,聯絡方式:QQ3060507060
相關推薦
Leetcode演算法Java全解答--39. 組合總和
Leetcode演算法Java全解答–39. 組合總和 題目 給定一個無重複元素的陣列 candidates 和一個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。 candidates 中的數字可以無限制重複被
Leetcode演算法Java全解答--77. 組合
Leetcode演算法Java全解答–77. 組合 文章目錄 Leetcode演算法Java全解答--77. 組合 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案 測試用
Leetcode演算法Java全解答--17. 電話號碼的字母組合
Leetcode演算法Java全解答–17. 電話號碼的字母組合 題目 給定一個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。 給出數字到字母的對映如下(與電話按鍵相同)。注意 1 不對應任何字母。 digitToLetter[‘2’]=“abc”;
Leetcode演算法Java全解答--11. 盛最多水的容器
Leetcode演算法Java全解答–11. 盛最多水的容器 題目 盛最多水的容器 題目描述提示幫助提交記錄社群討論閱讀解答 給定 n 個非負整數 a1,a2,…,an,每個數代表座標中的一個點 (i, ai) 。 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i
Leetcode演算法Java全解答--16. 最接近的三數之和
Leetcode演算法Java全解答–16. 最接近的三數之和 題目 給定一個包括 n 個整數的陣列 nums 和 一個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。 示例: 例如,給定
Leetcode演算法Java全解答--015. 三數之和
Leetcode演算法Java全解答–015. 三數之和 題目 給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ? 找出所有滿足條件且不重複的三元組。 注意:答案中不可以包含重複的三元組。 示例
Leetcode演算法Java全解答--12. 整數轉羅馬數字
Leetcode演算法Java全解答–12. 整數轉羅馬數字 題目 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L
Leetcode演算法Java全解答--19. 刪除連結串列的倒數第N個節點
Leetcode演算法Java全解答–19. 刪除連結串列的倒數第N個節點 文章目錄 Leetcode演算法Java全解答--19. 刪除連結串列的倒數第N個節點 題目 想法 結果 總結 程式碼 我
Leetcode演算法Java全解答--21. 合併兩個有序連結串列
Leetcode演算法Java全解答–21. 合併兩個有序連結串列 文章目錄 Leetcode演算法Java全解答--21. 合併兩個有序連結串列 題目 想法 結果 總結 程式碼 我的答案
Leetcode演算法Java全解答--43. 字串相乘
Leetcode演算法Java全解答–43. 字串相乘 文章目錄 Leetcode演算法Java全解答--43. 字串相乘 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案
Leetcode演算法Java全解答--36. 有效的數獨
Leetcode演算法Java全解答–36. 有效的數獨 文章目錄 Leetcode演算法Java全解答--36. 有效的數獨 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案
Leetcode演算法Java全解答--缺失的第一個正數
Leetcode演算法Java全解答–缺失的第一個正數 題目 給定一個未排序的整數陣列,找出其中沒有出現的最小的正整數。 示例 1: 輸入: [1,2,0] 輸出: 3 示例 2: 輸入: [3,4,-1,1] 輸出: 2 示例 3: 輸入: [7,8,9,11,12
Leetcode演算法Java全解答--32. 最長有效括號
Leetcode演算法Java全解答–32. 最長有效括號 文章目錄 Leetcode演算法Java全解答--32. 最長有效括號 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案
Leetcode演算法Java全解答--48.旋轉影象(Rotate Image)
Leetcode演算法Java全解答–48.旋轉影象(Rotate Image) 文章目錄 Leetcode演算法Java全解答--48.旋轉影象(Rotate Image) 題目 想法 結果 總結 程式碼
Leetcode演算法Java全解答--47. 全排列 II
Leetcode演算法Java全解答–47. 全排列 II 文章目錄 Leetcode演算法Java全解答--47. 全排列 II 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案
Leetcode演算法Java全解答--46. 全排列
Leetcode演算法Java全解答–46. 全排列 文章目錄 Leetcode演算法Java全解答--46. 全排列 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案 測
Leetcode演算法Java全解答--41. 缺失的第一個正數
Leetcode演算法Java全解答–41. 缺失的第一個正數 文章目錄 Leetcode演算法Java全解答--41. 缺失的第一個正數 題目 想法 結果 總結 程式碼 我的答案 大佬們
Leetcode演算法Java全解答--50. Pow(x, n)
Leetcode演算法Java全解答–50. Pow(x, n) 文章目錄 Leetcode演算法Java全解答--50. Pow(x, n) 題目 想法 結果 總結 程式碼 我的答案 大
Leetcode演算法Java全解答--49. 字母異位詞分組
Leetcode演算法Java全解答–49. 字母異位詞分組 文章目錄 Leetcode演算法Java全解答--49. 字母異位詞分組 題目 想法 結果 總結 程式碼 我的答案 大佬們的答
Leetcode演算法Java全解答--42.接雨水
Leetcode演算法Java全解答–42.接雨水 文章目錄 Leetcode演算法Java全解答--42.接雨水 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案 測試用