From ecc7845c33d3f63020cf4a3e02f97daf88297c40 Mon Sep 17 00:00:00 2001 From: Akemon <1404257522@qq.com> Date: Sat, 4 May 2019 23:00:41 +0800 Subject: [PATCH 01/25] Daryl_206 --- ArrayAndLink/Daryl_206.png | Bin 0 -> 41727 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ArrayAndLink/Daryl_206.png diff --git a/ArrayAndLink/Daryl_206.png b/ArrayAndLink/Daryl_206.png new file mode 100644 index 0000000000000000000000000000000000000000..e5664f8a6a6366bae782b4df966f6e8b41187a46 GIT binary patch literal 41727 zcmcfpRd5_lv^5Hf(UvT>n3>sPX0(`@nVBpGip9DK*>WuK%OGNfolX(dlA3~ zNLLjpQHa_}f@AOrjHQTz2m}Nm9{I%>7JQEAB(3cV0fEx@@q-+4EH{IIC`^$N7g6&v zIDef|#aIRn#RtAqYiI*p_K~<-XC}rax!C{o#QsVAY_q_!A6zLPN~Wq0SA=^_n#C5( zqGI&ONgn-gKRql9^=GuSL_veW-A2wOPqU-v=7n1X@(#&?cNG!r@v4x+=Ebf5LCzfL zB~bAF^8KTy5Wmy`v|qpjfPk>FwnKu!_$cY%WkdDAfD1usgQdbOkl@m!*V92jdm2ZNYF*aNAfV>4nNj8oP-X9i`S%F6sj%)=_8~I*Tt(MxZtKH9PQ0o6 zW8_tM>|9(Wvt$22&QmOKXPsc`X(RCZZXG&Bl^9JkHss5oxpTB+ew%BW zMZpd{=R3oS7_p*lPjC5PeDCeGl+|^HqK}D;3Gh)vT~zNiRjF2TJnkglDZE(n#}YMB z)+%!rbZ|D%b5D=es;)Oz(EEAZ+n1q5-I1%KbZ<^2k3HiVHn`M21#VgR)L0coon^UC zRFXk-bYYLwfxDKyT1*zA9{8_@=_hbQb|%OXz>5pHDYrjXn<^2Sp<3!5xZcbl>tlVJ z`ttr$*19k0F7?ayZp&vZ6ZO$ZbA@UXNruHLv{AfsYYSTR8EStrrimO{qEsgWml}_c zCSy!g<3f$lPgNE%(cXPU2O97X$(<#jQ_T&UWRUj-DNEaftd|O1GGUWXd#@3yC9ky^ zq*g`?Vfsk~R0_?K(+0f)TYPJMry6X|qs&|TOr|m$kX2Aar?@(_akuYpuOB1T|Ba6_bVVHdzT*_P(bcvIH>ob~! z6&v=u2TPs@Q6s*F8x1GZfj)VJhr=AEzb@uf`Q hXEm1wehyAmGD}cNi3UQZ1lOM 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 literal 0 HcmV?d00001 -- Gitee From 4bfe84232691684a59bcdd01d16796e7a471ddb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 17:44:50 +0800 Subject: [PATCH 02/25] =?UTF-8?q?new=20dir=20=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "StackAndQueue/\345\256\266/.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "StackAndQueue/\345\256\266/.keep" diff --git "a/StackAndQueue/\345\256\266/.keep" "b/StackAndQueue/\345\256\266/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From 1a842f56bb914139f0056bbabd6d165a01be32f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 17:50:46 +0800 Subject: [PATCH 03/25] 20 --- "StackAndQueue/\345\256\266_20.md" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 "StackAndQueue/\345\256\266_20.md" diff --git "a/StackAndQueue/\345\256\266_20.md" "b/StackAndQueue/\345\256\266_20.md" new file mode 100644 index 0000000..c7eeaee --- /dev/null +++ "b/StackAndQueue/\345\256\266_20.md" @@ -0,0 +1,19 @@ +/** + * 作者:家 + * 思路:用字典储存对应的括号,遍历字符串,遇到左括号压栈,遇到右括号检查栈顶是否对应,对应即可弹出,最后判断栈是否为空。 + * 当然如果开心的话,可以先判断字符串长度,为奇数直接return False + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +class Solution: + def isValid(self, s: str) -> bool: + stack = [] + dicts = {')': '(', ']': '[', '}': '{'} + for x in s : + if x in ["(","[","{"] : + stack.append(x) + else : + if len(stack) == 0 or stack.pop() != dicts[x] : + return False + return len(stack) == 0 + \ No newline at end of file -- Gitee From 1422950257379c00b0c0fd4382e5cb3e123755cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 17:54:52 +0800 Subject: [PATCH 04/25] 225 --- "StackAndQueue/\345\256\266_225.md" | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 "StackAndQueue/\345\256\266_225.md" diff --git "a/StackAndQueue/\345\256\266_225.md" "b/StackAndQueue/\345\256\266_225.md" new file mode 100644 index 0000000..1f511b4 --- /dev/null +++ "b/StackAndQueue/\345\256\266_225.md" @@ -0,0 +1,27 @@ +/** + * 作者:家 + * 思路:正统的思路肯定是两个队列模拟栈,如果只是刷题的话用python列表的特性即可实现。 + * 时间复杂度: + * push:O(1) + * pop:O(1) + * top:O(1) + * empty:O(1) + * 空间复杂度:O(n) + */ +class MyStack: + + def __init__(self): + self.stack = [] + + def push(self, x: int) -> None: + self.stack.append(x) + + def pop(self) -> int: + return self.stack.pop() + + def top(self) -> int: + return self.stack[-1] + + def empty(self) -> bool: + return not self.stack + \ No newline at end of file -- Gitee From 88907c2d295ff2ffe18b19f217633a9fce7cce0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 17:56:19 +0800 Subject: [PATCH 05/25] 232 --- "StackAndQueue/\345\256\266_232.md" | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 "StackAndQueue/\345\256\266_232.md" diff --git "a/StackAndQueue/\345\256\266_232.md" "b/StackAndQueue/\345\256\266_232.md" new file mode 100644 index 0000000..6ad0e55 --- /dev/null +++ "b/StackAndQueue/\345\256\266_232.md" @@ -0,0 +1,28 @@ +/** + * 作者:家 + * 思路:正统的思路肯定是两个栈模拟队列,如果只是刷题的话用python列表的特性即可实现。 + * 时间复杂度: + * push:O(1) + * pop:O(1) + * peek:O(1) + * empty:O(1) + * 空间复杂度:O(n) + */ +class MyQueue: + + def __init__(self): + self.queue = [] + + def push(self, x: int) -> None: + self.queue.append(x) + + def pop(self) -> int: + tmp = self.queue[0] + self.queue = self.queue[1:] + return tmp + + def peek(self) -> int: + return self.queue[0] + + def empty(self) -> bool: + return not self.queue \ No newline at end of file -- Gitee From 96d5dc53dd6b1474998f49ffd8ee7380f0178129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 17:56:55 +0800 Subject: [PATCH 06/25] 703 --- "StackAndQueue/\345\256\266_703.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "StackAndQueue/\345\256\266_703.md" diff --git "a/StackAndQueue/\345\256\266_703.md" "b/StackAndQueue/\345\256\266_703.md" new file mode 100644 index 0000000..e69de29 -- Gitee From b3460a249f5294b97621d024736d82ed999170ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 17:57:31 +0800 Subject: [PATCH 07/25] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E5=AE=B6=5F225.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "StackAndQueue/\345\256\266_225.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/StackAndQueue/\345\256\266_225.md" "b/StackAndQueue/\345\256\266_225.md" index 1f511b4..f171e13 100644 --- "a/StackAndQueue/\345\256\266_225.md" +++ "b/StackAndQueue/\345\256\266_225.md" @@ -1,3 +1,4 @@ +```go /** * 作者:家 * 思路:正统的思路肯定是两个队列模拟栈,如果只是刷题的话用python列表的特性即可实现。 @@ -24,4 +25,4 @@ class MyStack: def empty(self) -> bool: return not self.stack - \ No newline at end of file +``` \ No newline at end of file -- Gitee From bdc9094485c2318277df529003d4a3752fa7b46a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:02:22 +0800 Subject: [PATCH 08/25] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E5=AE=B6=5F703.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "StackAndQueue/\345\256\266_703.md" | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git "a/StackAndQueue/\345\256\266_703.md" "b/StackAndQueue/\345\256\266_703.md" index e69de29..6f73df0 100644 --- "a/StackAndQueue/\345\256\266_703.md" +++ "b/StackAndQueue/\345\256\266_703.md" @@ -0,0 +1,25 @@ +```go +/** + * 作者:家 + * 思路:用一个小顶堆来实现,并且保证长度为k即可。 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +from heapq import heappush, heapify, heappop, heappushpop +class KthLargest: + + def __init__(self, k: int, nums: List[int]): + self.k = k + self.heap = nums + heapify(self.heap) + while len(self.heap) > k: + heappop(self.heap) + + def add(self, val: int) -> int: + if len(self.heap) < self.k: + heappush(self.heap, val) + else: + heappushpop(self.heap, val) + return self.heap[0] + +``` \ No newline at end of file -- Gitee From a4b669523c5edab200fa54298f0841e38e121ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:10:17 +0800 Subject: [PATCH 09/25] 239 --- "StackAndQueue/\345\256\266_239.md" | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 "StackAndQueue/\345\256\266_239.md" diff --git "a/StackAndQueue/\345\256\266_239.md" "b/StackAndQueue/\345\256\266_239.md" new file mode 100644 index 0000000..cbaacaa --- /dev/null +++ "b/StackAndQueue/\345\256\266_239.md" @@ -0,0 +1,28 @@ +```go +/** + * 作者:家 + * 思路:用队列来实现就可以了,这个队列长度为k,保证队首元素为队列中的最大元素即可。详情在代码,更详情在博客,博客链接后续补上。 + * 时间复杂度:O(n) + * 空间复杂度:O(k) + */ +class Solution: + def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: + l = len(nums) + if l == 0 or k == 0 : + return [] + queue,re = [],[] + for i in range(len(nums)) : + //如果队列中元素大于k就pop + if i >= k and i-queue[0] >= k : + queue = queue[1:] + //循环,把队列中小于新元素的元素pop掉 + while len(queue) > 0 and nums[i] >= nums[queue[len(queue)-1]] : + queue = queue[:len(queue)-1] + //队列中存的是索引 + queue.append(i) + if i >= k-1 : + re.append(nums[queue[0]]) + + return re + +``` \ No newline at end of file -- Gitee From c556c7a3c963045813695460fefb71160728d27a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:13:02 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E5=AE=B6=5F20.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "StackAndQueue/\345\256\266_20.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/StackAndQueue/\345\256\266_20.md" "b/StackAndQueue/\345\256\266_20.md" index c7eeaee..ee942cb 100644 --- "a/StackAndQueue/\345\256\266_20.md" +++ "b/StackAndQueue/\345\256\266_20.md" @@ -1,3 +1,4 @@ +```go /** * 作者:家 * 思路:用字典储存对应的括号,遍历字符串,遇到左括号压栈,遇到右括号检查栈顶是否对应,对应即可弹出,最后判断栈是否为空。 @@ -16,4 +17,4 @@ class Solution: if len(stack) == 0 or stack.pop() != dicts[x] : return False return len(stack) == 0 - \ No newline at end of file +``` \ No newline at end of file -- Gitee From 82f7c16e8e70c89d65d270c1c2eba9e28fbd8632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:14:26 +0800 Subject: [PATCH 11/25] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6StackAndQueue/=E5=AE=B6=5F225.md=E4=B8=BAStackAndQueue?= =?UTF-8?q?/=E5=AE=B6/=E5=AE=B6=5F225.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\256\266/\345\256\266_225.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "StackAndQueue/\345\256\266_225.md" => "StackAndQueue/\345\256\266/\345\256\266_225.md" (100%) diff --git "a/StackAndQueue/\345\256\266_225.md" "b/StackAndQueue/\345\256\266/\345\256\266_225.md" similarity index 100% rename from "StackAndQueue/\345\256\266_225.md" rename to "StackAndQueue/\345\256\266/\345\256\266_225.md" -- Gitee From 7f2960d7e12fbd219fd8968b79aef81cb69436df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:14:38 +0800 Subject: [PATCH 12/25] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6StackAndQueue/=E5=AE=B6=5F20.md=E4=B8=BAStackAndQueue/?= =?UTF-8?q?=E5=AE=B6/=E5=AE=B6=5F20.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\256\266/\345\256\266_20.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "StackAndQueue/\345\256\266_20.md" => "StackAndQueue/\345\256\266/\345\256\266_20.md" (100%) diff --git "a/StackAndQueue/\345\256\266_20.md" "b/StackAndQueue/\345\256\266/\345\256\266_20.md" similarity index 100% rename from "StackAndQueue/\345\256\266_20.md" rename to "StackAndQueue/\345\256\266/\345\256\266_20.md" -- Gitee From 01a6ebe222e2a178877fc4d2bdc6fe8eaf6938ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:14:47 +0800 Subject: [PATCH 13/25] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6StackAndQueue/=E5=AE=B6=5F232.md=E4=B8=BAStackAndQueue?= =?UTF-8?q?/=E5=AE=B6/=E5=AE=B6=5F232.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\256\266/\345\256\266_232.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "StackAndQueue/\345\256\266_232.md" => "StackAndQueue/\345\256\266/\345\256\266_232.md" (100%) diff --git "a/StackAndQueue/\345\256\266_232.md" "b/StackAndQueue/\345\256\266/\345\256\266_232.md" similarity index 100% rename from "StackAndQueue/\345\256\266_232.md" rename to "StackAndQueue/\345\256\266/\345\256\266_232.md" -- Gitee From 9dbc88e8f62255634b66ff761b01e3c93455571d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:14:55 +0800 Subject: [PATCH 14/25] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6StackAndQueue/=E5=AE=B6=5F239.md=E4=B8=BAStackAndQueue?= =?UTF-8?q?/=E5=AE=B6/=E5=AE=B6=5F239.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\256\266/\345\256\266_239.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "StackAndQueue/\345\256\266_239.md" => "StackAndQueue/\345\256\266/\345\256\266_239.md" (100%) diff --git "a/StackAndQueue/\345\256\266_239.md" "b/StackAndQueue/\345\256\266/\345\256\266_239.md" similarity index 100% rename from "StackAndQueue/\345\256\266_239.md" rename to "StackAndQueue/\345\256\266/\345\256\266_239.md" -- Gitee From 07b2bfab599d8c579d4d812a2c954fa7d4e3a2d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 15 May 2019 18:15:03 +0800 Subject: [PATCH 15/25] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6StackAndQueue/=E5=AE=B6=5F703.md=E4=B8=BAStackAndQueue?= =?UTF-8?q?/=E5=AE=B6/=E5=AE=B6=5F703.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\256\266/\345\256\266_703.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "StackAndQueue/\345\256\266_703.md" => "StackAndQueue/\345\256\266/\345\256\266_703.md" (100%) diff --git "a/StackAndQueue/\345\256\266_703.md" "b/StackAndQueue/\345\256\266/\345\256\266_703.md" similarity index 100% rename from "StackAndQueue/\345\256\266_703.md" rename to "StackAndQueue/\345\256\266/\345\256\266_703.md" -- Gitee From 42f40f8c58d6826d4336157e14e167dd1d7fa9aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 11:57:07 +0800 Subject: [PATCH 16/25] 22 --- "Tree/\345\256\266_98.md" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 "Tree/\345\256\266_98.md" diff --git "a/Tree/\345\256\266_98.md" "b/Tree/\345\256\266_98.md" new file mode 100644 index 0000000..6d70652 --- /dev/null +++ "b/Tree/\345\256\266_98.md" @@ -0,0 +1,15 @@ +``` +/** + * 作者:家 + * 思路:深度优先把节点都判断一下就好 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +class Solution: + def isValidBST(self, root: TreeNode) -> bool: + def valid(root: TreeNode, m:int ,l: int) -> bool: + if root == None : return True + if root.val >= m or root.val <= l : return False + return valid(root.left, root.val,l) and valid(root.right, m,root.val) + return valid(root,2 << 31, -2 << 31) +``` \ No newline at end of file -- Gitee From 9847da0e9bcb94afcf999cd2b44d09e252c33a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 11:57:31 +0800 Subject: [PATCH 17/25] =?UTF-8?q?new=20dir=20=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Tree/\345\256\266/.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Tree/\345\256\266/.keep" diff --git "a/Tree/\345\256\266/.keep" "b/Tree/\345\256\266/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From f28c3936ad135215e42bbc2a465f41c35977130a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 11:57:47 +0800 Subject: [PATCH 18/25] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6Tree/=E5=AE=B6=5F98.md=E4=B8=BATree/=E5=AE=B6/?= =?UTF-8?q?=E5=AE=B6=5F98.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\345\256\266_98.md" => "Tree/\345\256\266/\345\256\266_98.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "Tree/\345\256\266_98.md" => "Tree/\345\256\266/\345\256\266_98.md" (100%) diff --git "a/Tree/\345\256\266_98.md" "b/Tree/\345\256\266/\345\256\266_98.md" similarity index 100% rename from "Tree/\345\256\266_98.md" rename to "Tree/\345\256\266/\345\256\266_98.md" -- Gitee From 167cdc3553f383e28128e63c4a4ee11ed5e74193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 12:00:27 +0800 Subject: [PATCH 19/25] 222 --- "Tree/\345\256\266/\345\256\266_235.md" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 "Tree/\345\256\266/\345\256\266_235.md" diff --git "a/Tree/\345\256\266/\345\256\266_235.md" "b/Tree/\345\256\266/\345\256\266_235.md" new file mode 100644 index 0000000..054b61d --- /dev/null +++ "b/Tree/\345\256\266/\345\256\266_235.md" @@ -0,0 +1,15 @@ +``` +/** + * 作者:家 + * 思路:毕竟是二叉搜索树,按照当前节点跟左右孩子的大小关系就可以找到公共祖先 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +class Solution: + def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': + if p.val > root.val < q.val: + return self.lowestCommonAncestor(root.right, p, q) + elif p.val < root.val > q.val: + return self.lowestCommonAncestor(root.left, p, q) + else: return root +``` \ No newline at end of file -- Gitee From f9955e10350afbc8d0044b6c0f8b17fb4a785d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 12:03:27 +0800 Subject: [PATCH 20/25] 22 --- "Tree/\345\256\266/\345\256\266_236.md" | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 "Tree/\345\256\266/\345\256\266_236.md" diff --git "a/Tree/\345\256\266/\345\256\266_236.md" "b/Tree/\345\256\266/\345\256\266_236.md" new file mode 100644 index 0000000..573cff2 --- /dev/null +++ "b/Tree/\345\256\266/\345\256\266_236.md" @@ -0,0 +1,14 @@ +``` +/** + * 作者:家 + * 思路:二叉树,递归结构是如果当前节点的左右各有p、q其中一个,那么当前就是公共祖先,如果其中一边有两个,那么直接去那一边找。 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +class Solution: + def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': + if root in [None,p,q] : return root + left = self.lowestCommonAncestor(root.left, p, q) + right = self.lowestCommonAncestor(root.right, p, q) + return right if left == None else left if right == None else root +``` \ No newline at end of file -- Gitee From 24a6d57b6da48b92925ac2794c4ca76961ed2aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 12:05:26 +0800 Subject: [PATCH 21/25] 222 --- "Tree/\345\256\266/\345\256\266_226.md" | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 "Tree/\345\256\266/\345\256\266_226.md" diff --git "a/Tree/\345\256\266/\345\256\266_226.md" "b/Tree/\345\256\266/\345\256\266_226.md" new file mode 100644 index 0000000..187bee9 --- /dev/null +++ "b/Tree/\345\256\266/\345\256\266_226.md" @@ -0,0 +1,17 @@ +``` +/** + * 作者:家 + * 思路:前序后序遍历都行,遍历的同时把当前节点的左右孩子换一下就行。 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +func invertTree(root *TreeNode) *TreeNode { + if root == nil { + return root + } + root.Left,root.Right = root.Right,root.Left + invertTree(root.Left) + invertTree(root.Right) + return root +} +``` \ No newline at end of file -- Gitee From 52a86b72788ac9b170860065cd4cd9ac8e2f4a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 12:07:59 +0800 Subject: [PATCH 22/25] 222 --- "Tree/\345\256\266/\345\256\266_94.md" | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 "Tree/\345\256\266/\345\256\266_94.md" diff --git "a/Tree/\345\256\266/\345\256\266_94.md" "b/Tree/\345\256\266/\345\256\266_94.md" new file mode 100644 index 0000000..099f21e --- /dev/null +++ "b/Tree/\345\256\266/\345\256\266_94.md" @@ -0,0 +1,26 @@ +``` +/** + * 作者:家 + * 思路:用一个队列玩就行。 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +func inorderTraversal(root *TreeNode) []int { + s := []*TreeNode{} + re := []int{} + for { + for root != nil { + s = append(s,root) + root = root.Left + } + if len(s) == 0 { + return re + } + l := len(s)-1 + re = append(re,s[l].Val) + root = s[l].Right + s = s[:l] + } + return re +} +``` \ No newline at end of file -- Gitee From cbdeb65c623f8b62ef8684714e89e5b43188bbd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 12:09:28 +0800 Subject: [PATCH 23/25] 222 --- "Tree/\345\256\266/\345\256\266_144.md" | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 "Tree/\345\256\266/\345\256\266_144.md" diff --git "a/Tree/\345\256\266/\345\256\266_144.md" "b/Tree/\345\256\266/\345\256\266_144.md" new file mode 100644 index 0000000..d5ebecd --- /dev/null +++ "b/Tree/\345\256\266/\345\256\266_144.md" @@ -0,0 +1,26 @@ +``` +/** + * 作者:家 + * 思路:用一个队列玩就行。 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +func preorderTraversal(root *TreeNode) []int { + s := []*TreeNode{} + re := []int{} + for { + for root != nil { + re = append(re,root.Val) + s = append(s,root) + root = root.Left + } + l := len(s) + if l == 0 { + return re + } + root = s[l-1].Right + s = s[:l-1] + } + return re +} +``` \ No newline at end of file -- Gitee From 4685a78ad1a3b5dd50e8e3e5dadb66626ec3a6ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B1=89=E5=8D=BF?= <15176331678@163.com> Date: Wed, 22 May 2019 12:14:04 +0800 Subject: [PATCH 24/25] 222 --- "Tree/\345\256\266/\345\256\266_145.md" | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 "Tree/\345\256\266/\345\256\266_145.md" diff --git "a/Tree/\345\256\266/\345\256\266_145.md" "b/Tree/\345\256\266/\345\256\266_145.md" new file mode 100644 index 0000000..24f77a7 --- /dev/null +++ "b/Tree/\345\256\266/\345\256\266_145.md" @@ -0,0 +1,31 @@ +``` +/** + * 作者:家 + * 思路:三个里最难的一个,有个技巧,因为后序就是【左右根】,那么我们可以先序的【根右左】遍历,然后反转结果就好。 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +func postorderTraversal(root *TreeNode) []int { + s := []*TreeNode{} + re := []int{} + for { + for root != nil { + re = append(re,root.Val) + s = append(s,root) + root = root.Right + } + l := len(s) + if l == 0 { + res := make([]int,len(re)) + for i:=0; i Date: Wed, 22 May 2019 12:17:51 +0800 Subject: [PATCH 25/25] 222 --- "Tree/\345\256\266/\345\256\266_124.md" | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 "Tree/\345\256\266/\345\256\266_124.md" diff --git "a/Tree/\345\256\266/\345\256\266_124.md" "b/Tree/\345\256\266/\345\256\266_124.md" new file mode 100644 index 0000000..103eb0c --- /dev/null +++ "b/Tree/\345\256\266/\345\256\266_124.md" @@ -0,0 +1,32 @@ +``` +/** + * 作者:家 + * 思路:深度优先就好。 + * 时间复杂度:O(n) + * 空间复杂度:O(n) + */ +func maxPathSum(root *TreeNode) int { + re := -2 << 31 + dfs := func(*TreeNode) int { + return 0 + } + dfs = func(root *TreeNode) int { + if root == nil { + return 0 + } + left := max(0,dfs(root.Left)) + right := max(0,dfs(root.Right)) + re = max(re, left+right+root.Val) + return max(left,right)+root.Val + } + dfs(root) + return re +} + +func max(a,b int)int { + if a > b { + return a + } + return b +} +``` \ No newline at end of file -- Gitee