From 4f96f64e3d6f54eac978bdea355c22060f80d1ee Mon Sep 17 00:00:00 2001
From: jojoo15 <75017412+jojoo15@users.noreply.github.com>
Date: Tue, 18 May 2021 15:59:48 +0200
Subject: [PATCH 01/10] =?UTF-8?q?Update=200530.=E4=BA=8C=E5=8F=89=E6=90=9C?=
=?UTF-8?q?=E7=B4=A2=E6=A0=91=E7=9A=84=E6=9C=80=E5=B0=8F=E7=BB=9D=E5=AF=B9?=
=?UTF-8?q?=E5=B7=AE.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
added python version of code
---
.../0530.二叉搜索树的最小绝对差.md | 27 ++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/problems/0530.二叉搜索树的最小绝对差.md b/problems/0530.二叉搜索树的最小绝对差.md
index 903ebf78..347d66d1 100644
--- a/problems/0530.二叉搜索树的最小绝对差.md
+++ b/problems/0530.二叉搜索树的最小绝对差.md
@@ -177,8 +177,29 @@ class Solution {
```
Python:
-
-
+```python
+# Definition for a binary tree node.
+# class TreeNode:
+# def __init__(self, val=0, left=None, right=None):
+# self.val = val
+# self.left = left
+# self.right = right
+class Solution:
+ def getMinimumDifference(self, root: TreeNode) -> int:
+ res = []
+ r = float("inf")
+ def buildaList(root): //把二叉搜索树转换成有序数组
+ if not root: return None
+ if root.left: buildaList(root.left) //左
+ res.append(root.val) //中
+ if root.right: buildaList(root.right) //右
+ return res
+
+ buildaList(root)
+ for i in range(len(res)-1): // 统计有序数组的最小差值
+ r = min(abs(res[i]-res[i+1]),r)
+ return r
+```
Go:
@@ -188,4 +209,4 @@ Go:
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
* 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)
-
\ No newline at end of file
+
From 41272638670e6da93171dfce8af63d5da42d4e36 Mon Sep 17 00:00:00 2001
From: "qingyi.liu"
Date: Tue, 18 May 2021 22:51:51 +0800
Subject: [PATCH 02/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0111.=E4=BA=8C=E5=8F=89?=
=?UTF-8?q?=E6=A0=91=E7=9A=84=E6=9C=80=E5=B0=8F=E6=B7=B1=E5=BA=A6=20JavaSc?=
=?UTF-8?q?ript=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0111.二叉树的最小深度.md | 47 +++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/problems/0111.二叉树的最小深度.md b/problems/0111.二叉树的最小深度.md
index 01b6c89c..5605e13d 100644
--- a/problems/0111.二叉树的最小深度.md
+++ b/problems/0111.二叉树的最小深度.md
@@ -302,6 +302,53 @@ class Solution:
Go:
+JavaScript:
+
+递归法:
+
+```javascript
+/**
+ * @param {TreeNode} root
+ * @return {number}
+ */
+var minDepth1 = function(root) {
+ if(!root) return 0;
+ // 到叶子节点 返回 1
+ if(!root.left && !root.right) return 1;
+ // 只有右节点时 递归右节点
+ if(!root.left) return 1 + minDepth(root.right);、
+ // 只有左节点时 递归左节点
+ if(!root.right) return 1 + minDepth(root.left);
+ return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
+};
+```
+
+迭代法:
+
+```javascript
+/**
+* @param {TreeNode} root
+* @return {number}
+*/
+var minDepth = function(root) {
+ if(!root) return 0;
+ const queue = [root];
+ let dep = 0;
+ while(true) {
+ let size = queue.length;
+ dep++;
+ while(size--){
+ const node = queue.shift();
+ // 到第一个叶子节点 返回 当前深度
+ if(!node.left && !node.right) return dep;
+ node.left && queue.push(node.left);
+ node.right && queue.push(node.right);
+ }
+ }
+};
+```
+
+
-----------------------
From cf6ec4f65a8ee43a15c29f0a380cfac5f809a8dd Mon Sep 17 00:00:00 2001
From: X-shuffle <53906918+X-shuffle@users.noreply.github.com>
Date: Tue, 18 May 2021 22:58:00 +0800
Subject: [PATCH 03/10] =?UTF-8?q?Update=20=E4=BA=8C=E5=8F=89=E6=A0=91?=
=?UTF-8?q?=E7=9A=84=E8=BF=AD=E4=BB=A3=E9=81=8D=E5=8E=86.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
添加 二叉树的迭代遍历 GO版本
---
problems/二叉树的迭代遍历.md | 102 +++++++++++++++++++++++++++
1 file changed, 102 insertions(+)
diff --git a/problems/二叉树的迭代遍历.md b/problems/二叉树的迭代遍历.md
index 2647616b..d228077b 100644
--- a/problems/二叉树的迭代遍历.md
+++ b/problems/二叉树的迭代遍历.md
@@ -163,7 +163,109 @@ Python:
Go:
+> 迭代法前序遍历
+```go
+//迭代法前序遍历
+/**
+ type Element struct {
+ // 元素保管的值
+ Value interface{}
+ // 内含隐藏或非导出字段
+}
+
+func (l *List) Back() *Element
+前序遍历:中左右
+压栈顺序:右左中
+ **/
+func preorderTraversal(root *TreeNode) []int {
+ if root == nil {
+ return nil
+ }
+ var stack = list.New()
+ stack.PushBack(root.Right)
+ stack.PushBack(root.Left)
+ res:=[]int{}
+ res=append(res,root.Val)
+ for stack.Len()>0 {
+ e:=stack.Back()
+ stack.Remove(e)
+ node := e.Value.(*TreeNode)//e是Element类型,其值为e.Value.由于Value为接口,所以要断言
+ if node==nil{
+ continue
+ }
+ res=append(res,node.Val)
+ stack.PushBack(node.Right)
+ stack.PushBack(node.Left)
+ }
+ return res
+}
+```
+
+> 迭代法后序遍历
+
+```go
+//后续遍历:左右中
+//压栈顺序:中右左(按照前序遍历思路),再反转结果数组
+func postorderTraversal(root *TreeNode) []int {
+ if root == nil {
+ return nil
+ }
+ var stack = list.New()
+ stack.PushBack(root.Left)
+ stack.PushBack(root.Right)
+ res:=[]int{}
+ res=append(res,root.Val)
+ for stack.Len()>0 {
+ e:=stack.Back()
+ stack.Remove(e)
+ node := e.Value.(*TreeNode)//e是Element类型,其值为e.Value.由于Value为接口,所以要断言
+ if node==nil{
+ continue
+ }
+ res=append(res,node.Val)
+ stack.PushBack(node.Left)
+ stack.PushBack(node.Right)
+ }
+ for i:=0;i 迭代法中序遍历
+
+```go
+//迭代法中序遍历
+func inorderTraversal(root *TreeNode) []int {
+ rootRes:=[]int{}
+ if root==nil{
+ return nil
+ }
+ stack:=list.New()
+ node:=root
+ //先将所有左节点找到,加入栈中
+ for node!=nil{
+ stack.PushBack(node)
+ node=node.Left
+ }
+ //其次对栈中的每个节点先弹出加入到结果集中,再找到该节点的右节点的所有左节点加入栈中
+ for stack.Len()>0{
+ e:=stack.Back()
+ node:=e.Value.(*TreeNode)
+ stack.Remove(e)
+ //找到该节点的右节点,再搜索他的所有左节点加入栈中
+ rootRes=append(rootRes,node.Val)
+ node=node.Right
+ for node!=nil{
+ stack.PushBack(node)
+ node=node.Left
+ }
+ }
+ return rootRes
+}
+```
From 1fcb8402232e4db9fb1af3312232f7c2e3f26ee5 Mon Sep 17 00:00:00 2001
From: tw2665 <55668073+tw2665@users.noreply.github.com>
Date: Tue, 18 May 2021 15:45:10 -0400
Subject: [PATCH 04/10] =?UTF-8?q?Update=200454.=E5=9B=9B=E6=95=B0=E7=9B=B8?=
=?UTF-8?q?=E5=8A=A0II.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0454.四数相加II.md | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/problems/0454.四数相加II.md b/problems/0454.四数相加II.md
index a2ef928b..ad928a3f 100644
--- a/problems/0454.四数相加II.md
+++ b/problems/0454.四数相加II.md
@@ -121,6 +121,37 @@ class Solution {
Python:
+```
+class Solution(object):
+ def fourSumCount(self, nums1, nums2, nums3, nums4):
+ """
+ :type nums1: List[int]
+ :type nums2: List[int]
+ :type nums3: List[int]
+ :type nums4: List[int]
+ :rtype: int
+ """
+ # use a dict to store the elements in nums1 and nums2 and their sum
+ hashmap = dict()
+ for n1 in nums1:
+ for n2 in nums2:
+ if n1 + n2 in hashmap:
+ hashmap[n1+n2] += 1
+ else:
+ hashmap[n1+n2] = 1
+
+ # if the -(a+b) exists in nums3 and nums4, we shall add the count
+ count = 0
+ for n3 in nums3:
+ for n4 in nums4:
+ key = - n3 - n4
+ if key in hashmap:
+ count += hashmap[key]
+ return count
+
+
+```
+
Go:
From 830381313abb85357f180f6315e0e1c28c63c01d Mon Sep 17 00:00:00 2001
From: tw2665 <55668073+tw2665@users.noreply.github.com>
Date: Tue, 18 May 2021 15:53:09 -0400
Subject: [PATCH 05/10] =?UTF-8?q?Update=200383.=E8=B5=8E=E9=87=91=E4=BF=A1?=
=?UTF-8?q?.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0383.赎金信.md | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/problems/0383.赎金信.md b/problems/0383.赎金信.md
index 2f7ae4d8..527945fa 100644
--- a/problems/0383.赎金信.md
+++ b/problems/0383.赎金信.md
@@ -136,7 +136,34 @@ class Solution {
```
Python:
-
+```
+class Solution(object):
+ def canConstruct(self, ransomNote, magazine):
+ """
+ :type ransomNote: str
+ :type magazine: str
+ :rtype: bool
+ """
+
+ # use a dict to store the number of letter occurance in ransomNote
+ hashmap = dict()
+ for s in ransomNote:
+ if s in hashmap:
+ hashmap[s] += 1
+ else:
+ hashmap[s] = 1
+
+ # check if the letter we need can be found in magazine
+ for l in magazine:
+ if l in hashmap:
+ hashmap[l] -= 1
+
+ for key in hashmap:
+ if hashmap[key] > 0:
+ return False
+
+ return True
+```
Go:
From 9edc7aa01df2f652a170435870747a0896b0d83e Mon Sep 17 00:00:00 2001
From: charon2121 <66763177+charon2121@users.noreply.github.com>
Date: Wed, 19 May 2021 08:28:50 +0800
Subject: [PATCH 06/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20144.=E4=BA=8C?=
=?UTF-8?q?=E5=8F=89=E6=A0=91=E7=9A=84=E5=89=8D=E5=BA=8F=E9=81=8D=E5=8E=86?=
=?UTF-8?q?=20python3=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
更新 145.二叉树的后序遍历 python3版本
更新 94.二叉树的中序遍历 python3版本
---
problems/二叉树的迭代遍历.md | 62 ++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
diff --git a/problems/二叉树的迭代遍历.md b/problems/二叉树的迭代遍历.md
index 2647616b..be2456de 100644
--- a/problems/二叉树的迭代遍历.md
+++ b/problems/二叉树的迭代遍历.md
@@ -160,6 +160,68 @@ Java:
Python:
+```python3
+# 前序遍历-迭代-LC144_二叉树的前序遍历
+class Solution:
+ def preorderTraversal(self, root: TreeNode) -> List[int]:
+ # 根结点为空则返回空列表
+ if not root:
+ return []
+ stack = [root]
+ result = []
+ while stack:
+ node = stack.pop()
+ # 中结点先处理
+ result.append(node.val)
+ # 右孩子先入栈
+ if node.right:
+ stack.append(node.right)
+ # 左孩子后入栈
+ if node.left:
+ stack.append(node.left)
+ return result
+
+# 中序遍历-迭代-LC94_二叉树的中序遍历
+class Solution:
+ def inorderTraversal(self, root: TreeNode) -> List[int]:
+ if not root:
+ return []
+ stack = [] # 不能提前将root结点加入stack中
+ result = []
+ cur = root
+ while cur or stack:
+ # 先迭代访问最底层的左子树结点
+ if cur:
+ stack.append(cur)
+ cur = cur.left
+ # 到达最左结点后处理栈顶结点
+ else:
+ cur = stack.pop()
+ result.append(cur.val)
+ # 取栈顶元素右结点
+ cur = cur.right
+ return result
+
+# 后序遍历-迭代-LC145_二叉树的后序遍历
+class Solution:
+ def postorderTraversal(self, root: TreeNode) -> List[int]:
+ if not root:
+ return []
+ stack = [root]
+ result = []
+ while stack:
+ node = stack.pop()
+ # 中结点先处理
+ result.append(node.val)
+ # 左孩子先入栈
+ if node.left:
+ stack.append(node.left)
+ # 右孩子后入栈
+ if node.right:
+ stack.append(node.right)
+ # 将最终的数组翻转
+ return result[::-1]
+```
Go:
From 44c8ce6a4f54869008961c62d2728548b6f24e04 Mon Sep 17 00:00:00 2001
From: X-shuffle <53906918+X-shuffle@users.noreply.github.com>
Date: Wed, 19 May 2021 10:03:09 +0800
Subject: [PATCH 07/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E4=BA=8C=E5=8F=89?=
=?UTF-8?q?=E6=A0=91=E7=9A=84=E8=BF=AD=E4=BB=A3=E9=81=8D=E5=8E=86=20GO?=
=?UTF-8?q?=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
添加 二叉树的迭代遍历 GO版本
---
problems/二叉树的迭代遍历.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/problems/二叉树的迭代遍历.md b/problems/二叉树的迭代遍历.md
index d228077b..10e7e7b4 100644
--- a/problems/二叉树的迭代遍历.md
+++ b/problems/二叉树的迭代遍历.md
@@ -268,7 +268,6 @@ func inorderTraversal(root *TreeNode) []int {
```
-
-----------------------
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
From a57b6385c4ceccb7900cb9dc41a7eb3d6a59d2e5 Mon Sep 17 00:00:00 2001
From: X-shuffle <53906918+X-shuffle@users.noreply.github.com>
Date: Wed, 19 May 2021 10:07:22 +0800
Subject: [PATCH 08/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E4=BA=8C=E5=8F=89?=
=?UTF-8?q?=E6=A0=91=E7=9A=84=E8=BF=AD=E4=BB=A3=E9=81=8D=E5=8E=86=20GO?=
=?UTF-8?q?=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
添加 二叉树的迭代遍历 GO版本
---
problems/二叉树的迭代遍历.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/problems/二叉树的迭代遍历.md b/problems/二叉树的迭代遍历.md
index 10e7e7b4..a1906469 100644
--- a/problems/二叉树的迭代遍历.md
+++ b/problems/二叉树的迭代遍历.md
@@ -205,6 +205,7 @@ func preorderTraversal(root *TreeNode) []int {
> 迭代法后序遍历
```go
+//迭代法后序遍历
//后续遍历:左右中
//压栈顺序:中右左(按照前序遍历思路),再反转结果数组
func postorderTraversal(root *TreeNode) []int {
From c628620ceddbdbe236b1cbb6cc597431642ae260 Mon Sep 17 00:00:00 2001
From: QuinnDK <39618652+QuinnDK@users.noreply.github.com>
Date: Wed, 19 May 2021 10:07:40 +0800
Subject: [PATCH 09/10] =?UTF-8?q?Update=200516.=E6=9C=80=E9=95=BF=E5=9B=9E?=
=?UTF-8?q?=E6=96=87=E5=AD=90=E5=BA=8F=E5=88=97.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0516.最长回文子序列.md | 27 ++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/problems/0516.最长回文子序列.md b/problems/0516.最长回文子序列.md
index d7acef99..7736b69f 100644
--- a/problems/0516.最长回文子序列.md
+++ b/problems/0516.最长回文子序列.md
@@ -173,6 +173,33 @@ Python:
Go:
+```Go
+func longestPalindromeSubseq(s string) int {
+ lenth:=len(s)
+ dp:=make([][]int,lenth)
+ for i:=0;i=0;i--{
+ for j:=i+1;j
Date: Wed, 19 May 2021 10:25:58 +0800
Subject: [PATCH 10/10] =?UTF-8?q?Update=200055.=E8=B7=B3=E8=B7=83=E6=B8=B8?=
=?UTF-8?q?=E6=88=8F.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0055.跳跃游戏.md | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/problems/0055.跳跃游戏.md b/problems/0055.跳跃游戏.md
index a25c831a..ae2cbd1e 100644
--- a/problems/0055.跳跃游戏.md
+++ b/problems/0055.跳跃游戏.md
@@ -122,6 +122,24 @@ class Solution:
```
Go:
+```Go
+func canJUmp(nums []int) bool {
+ if len(nums)<=1{
+ return true
+ }
+ dp:=make([]bool,len(nums))
+ dp[0]=true
+ for i:=1;i=0;j--{
+ if dp[j]&&nums[j]+j>=i{
+ dp[i]=true
+ break
+ }
+ }
+ }
+ return dp[len(nums)-1]
+}
+```