演算法 組合總和 III

2021-10-09 09:17:04 字數 1282 閱讀 5393

題目

找出所有相加之和為 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...