【刷題1】LeetCode 39. 組合總和 java基礎
題目
https://leetcode-cn.com/problems/combination-sum/
分析
我們可以選擇當前數或跳過當前數。
這題數字可以被重複使用。
程式碼
class Solution {
List<List<Integer>> res;
int[] candidates;
public List<List<Integer>> combinationSum(int[] candidates, int target) {
this.candidates=candidates;
res=new ArrayList<List<Integer>>();
dfs(new ArrayList<Integer>(),0,target);
return res;
}
public void dfs(ArrayList<Integer> tmp,int index,int target){
if(index>candidates.length-1){
return;
}
if(target==0){
res.add(new ArrayList(tmp));
return;
}
//直接跳過,不選取當前數
dfs(tmp,index+1,target);
//選擇當前數
if(target>=candidates[index]){
tmp.add(candidates[index]);
dfs(tmp,index,target-candidates[index]);
//恢復
tmp.remove(tmp.size()-1);
return;
}
}
}
複雜度
結果
相關文章
- LeetCode題目:39. 組合總和 解題思路及Java實現LeetCodeJava
- LeetCode 39. 組合總和 40.組合總和II 131.分割回文串LeetCode
- leetcode:組合總和II(回溯java)LeetCodeJava
- Day 26| 39. 組合總和 、 40.組合總和II 、 131.分割回文串
- LeetCode39. 組合總和LeetCode
- Java基礎06 組合Java
- LeetCode216.組合總和lllLeetCode
- LeetCode40.組合總和IILeetCode
- LeetCode-040-組合總和 IILeetCode
- Leetcode刷題系列彙總LeetCode
- 【Leetcode刷題篇】leetcode56 合併區間LeetCode
- LeetCode刷題記錄——day1LeetCode
- [LeetCode 刷題] 1. 兩數之和LeetCode
- Java基礎知識總結-1Java
- 程式碼隨想錄演算法訓練營第23天 | 39.組合總和 40.組合總和Ⅱ 131.分割回文串演算法
- 【LeetCode(Java) - 254】因子的組合LeetCodeJava
- #leetcode刷題之路1-兩數之和LeetCode
- 程式碼隨想錄演算法訓練營第27天 | 39. 組合總和 、 40.組合總和II 、 131.分割回文串演算法
- 牛客刷題筆記--(java基礎301-400)筆記Java
- 組合語言實驗1—Debug基礎操作組合語言
- 面試題之:java基礎1面試題Java
- 程式碼隨想錄演算法訓練營,9月19日 | 39. 組合總和,40.組合總和II,131.分割回文串演算法
- LeetCode 刷題—樹LeetCode
- LeetCode刷題 堆LeetCode
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- 程式碼隨想錄演算法訓練營第26天 | 回溯02:39. 組合總和、40.組合總和II、131.分割回文串演算法
- Java面試題總結之Java基礎(三)Java面試題
- 基礎演算法題——異或和之和(位運算、組合數)演算法
- java基礎1Java
- Java基礎(1)Java
- LeetCode刷題記錄LeetCode
- leetcode刷題筆記LeetCode筆記
- 如何使用leetcode刷題LeetCode
- Leetcode刷題分類LeetCode
- LeetCode 刷題筆記LeetCode筆記
- Leetcode刷題準備LeetCode
- LeetCode刷題—陣列LeetCode陣列