題目:
找出所有相加之和為 n 的 k 個數的組合。組合中只允許含有 1 - 9 的正整數,並且每種組合中不存在重複的數字。
說明:
所有數字都是正整數。
解集不能包含重複的組合。
示例 2:
輸入: k = 3, n = 9
輸出: [[1,2,6], [1,3,5], [2,3,4]]
思路:
又是一道組合,挺好的,書讀百遍其義自見,同型別的題多做才能掌握竅門兒。
同樣是按照之前的思路,其實就是傳說中的回溯法了。
套路相同,不同的地方:遞迴終止條件
temp之和大於n,或者k0
k0的時候,有兩種情況:
1,加入結果集
2,不加入結果集
from typing import list
class
solution
:def
combinationsum3
(self, k:
int, n:
int)
-> list[list[
int]]:
src =
[i for i in
range(1
,10)]
self.res =
defdfs
(k,l,n,temp):if
sum(temp)
>n:
return
elif k ==
0and
sum(temp)
== n::]
)return
elif k ==
0and
sum(temp)
!= n:
return
size =
len(l)
for i in
range
(size):)
dfs(k-
1,l[i+1:
],n,temp)
temp.pop(
) dfs(k,src,n,
)return self.res
if __name__ ==
'__main__'
: k =
3 n =
15 res = solution(
).combinationsum3(k=k,n=n)
print
(res)
演算法題目 組合總和 III
思路 使用回溯 減枝來獲取組合,由於組合內不重複,並且為1 9的整數,解空間樹的如下圖所示 及 說明如下 class solution private void dfs list reslist,listcurlist,integer k,integer n,integer start 迴圈當前層 ...
組合總和 III
問題描述 找出所有相加之和為 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 cl...
組合總和III
找出所有相加之和為 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 class s...