找出所有相加之和為 n 的 k 個數的組合。組合中只允許含有 1 - 9 的正整數,並且每種組合中不存在重複的數字。怎麼又是組合總數力扣是找不出來別的題了嗎說明:所有數字都是正整數。 解集不能包含重複的組合。 示例 1:
輸入: k = 3, n = 7 輸出: [[1,2,4]] 示例 2:
輸入: k = 3, n = 9 輸出: [[1,2,6], [1,3,5], [2,3,4]]
anyway 總之和前兩次差不多的做法,回溯演算法就好。加乙個變數用於標記還剩幾個數可以選。有一些奇怪的剪枝。我是從小大**數的,所以可以剪掉當前數大於等於目標的一些分支。另外需要注意題目中只讓選1到9,在結束條件中需要加乙個當前數字不能大於9的判斷:
class
solution
else
cur.
remove
(cur.
size()
-1);
rec(curnum +
1, target, left, ans, cur);}
public list
>
combinationsum3
(int k,
int n)
}
看看題解…嗯可以看作時組合問題加乙個求和判斷…不過感覺沒必要強行轉化成另乙個問題,我這樣直接解決也可以
anyway,過了就好
每日一題 組合總和 II(中等)
組合總和 ii 給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 1,7 1,2,5 2,6 1,1,6 示例 2 ...
每日一題 32組合總和
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...
39 組合總和(每日一題)
給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...