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 1/8] =?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 2/8] 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 3/8] 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 4/8] 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 5/8] 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 6/8] =?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 7/8] =?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 8/8] 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