From 815fe64ffc47c9a5cc90ea150536c89510363f84 Mon Sep 17 00:00:00 2001 From: DtYXs <59554522+DtYXs@users.noreply.github.com> Date: Thu, 9 Dec 2021 11:49:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Update=200216.=E7=BB=84=E5=90=88=E6=80=BB?= =?UTF-8?q?=E5=92=8CIII.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Python版本代码缺少len(path)==k但sum!=n时的剪枝 --- problems/0216.组合总和III.md | 39 +++++++++++++++++++------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/problems/0216.组合总和III.md b/problems/0216.组合总和III.md index fa2ce37f..76813864 100644 --- a/problems/0216.组合总和III.md +++ b/problems/0216.组合总和III.md @@ -301,22 +301,29 @@ class Solution { ```py class Solution: - def combinationSum3(self, k: int, n: int) -> List[List[int]]: - res = [] #存放结果集 - path = [] #符合条件的结果 - def findallPath(n,k,sum,startIndex): - if sum > n: return #剪枝操作 - if sum == n and len(path) == k: #如果path.size() == k 但sum != n 直接返回 - return res.append(path[:]) - for i in range(startIndex,9-(k-len(path))+2): #剪枝操作 - path.append(i) - sum += i - findallPath(n,k,sum,i+1) #注意i+1调整startIndex - sum -= i #回溯 - path.pop() #回溯 - - findallPath(n,k,0,1) - return res + def __init__(self): + self.res = [] + self.sum_now = 0 + self.path = [] + + def combinationSum3(self, k: int, n: int) -> [[int]]: + self.backtracking(k, n, 1) + return self.res + + def backtracking(self, k: int, n: int, start_num: int): + if self.sum_now > n: # 剪枝 + return + if len(self.path) == k: # len(path)==k时不管sum是否等于n都会返回 + if self.sum_now == n: + self.res.append(self.path[:]) + 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: From 1a037380a095ce622a6bdcad1d1b8417b293e0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=81=E5=AE=A2=E5=AD=A6=E4=BC=9F?= Date: Fri, 10 Dec 2021 13:33:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E4=BA=8C=E5=8F=89?= =?UTF-8?q?=E6=A0=91=E7=90=86=E8=AE=BA=E5=9F=BA=E7=A1=80=E7=AF=87=20Swift?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/二叉树理论基础.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/problems/二叉树理论基础.md b/problems/二叉树理论基础.md index dab434e6..411e7e22 100644 --- a/problems/二叉树理论基础.md +++ b/problems/二叉树理论基础.md @@ -227,6 +227,21 @@ function TreeNode(val, left, right) { } ``` +Swift: +```Swift +class TreeNode { + var value: T + var left: TreeNode? + var right: TreeNode? + init(_ value: T, + left: TreeNode? = nil, + right: TreeNode? = nil) { + self.value = value + self.left = left + self.right = right + } +} +``` -----------------------