Merge pull request #937 from DtYXs/master

Update 0216.组合总和III.md
This commit is contained in:
程序员Carl
2021-12-13 12:28:57 +08:00
committed by GitHub

View File

@ -301,22 +301,29 @@ class Solution {
```py ```py
class Solution: class Solution:
def combinationSum3(self, k: int, n: int) -> List[List[int]]: def __init__(self):
res = [] #存放结果集 self.res = []
path = [] #符合条件的结果 self.sum_now = 0
def findallPath(n,k,sum,startIndex): self.path = []
if sum > n: return #剪枝操作
if sum == n and len(path) == k: #如果path.size() == k 但sum != n 直接返回 def combinationSum3(self, k: int, n: int) -> [[int]]:
return res.append(path[:]) self.backtracking(k, n, 1)
for i in range(startIndex,9-(k-len(path))+2): #剪枝操作 return self.res
path.append(i)
sum += i def backtracking(self, k: int, n: int, start_num: int):
findallPath(n,k,sum,i+1) #注意i+1调整startIndex if self.sum_now > n: # 剪枝
sum -= i #回溯 return
path.pop() #回溯 if len(self.path) == k: # len(path)==k时不管sum是否等于n都会返回
if self.sum_now == n:
findallPath(n,k,0,1) self.res.append(self.path[:])
return res return
for i in range(start_num, 10 - (k - len(self.path)) + 1):
self.path.append(i)
self.sum_now += i
self.backtracking(k, n, i + 1)
self.path.pop()
self.sum_now -= i
return
``` ```
## Go ## Go