![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
栈和队列
Vaccy Zhu
自律是解决人生问题最主要的工具,也是解决人生痛苦最重要的方法!
展开
-
从字符串中移除星号-栈2390-c++
【代码】从字符串中移除星号-栈2390-c++原创 2024-03-31 13:56:45 · 246 阅读 · 0 评论 -
最近的请求次数-队列933-c++
【代码】最近的请求次数-队列933-c++原创 2024-03-31 11:01:56 · 345 阅读 · 0 评论 -
最小栈-栈155-python
代码】最小栈-栈155-python。转载 2022-07-19 22:01:11 · 168 阅读 · 1 评论 -
最大矩形-单调栈85-python
暴力解法,把每个元素位置都当成一次矩形的右下角,时间复杂度O(m^2n),空间复杂度O(1)。单调栈,类似LC84-柱状图中最大的矩形,把它的解法和本题在融合到了一起,时间复杂度O(mn),空间复杂度O(n)。...转载 2022-07-02 13:46:34 · 173 阅读 · 0 评论 -
柱状图中最大的矩形-栈84-python
对每一个元素找到后面第一个比自己小的元素,属于单调栈(单调递增)问题。class Solution: def largestRectangleArea(self, heights: List[int]) -> int: # 在heights的首尾增加两个哨兵元素0: # 首部是为了循环中不用判断stack是否为空; # 尾部是为了保证原heights数组中所有元素可以出栈。 heights.append(0) h转载 2022-05-03 11:27:16 · 119 阅读 · 0 评论 -
每日温度-栈739-python
没看答案,单调栈问题。class Solution: def dailyTemperatures(self, temperatures: List[int]) -> List[int]: n = len(temperatures) stack = [] res = [0] * n for i in range(n-1, -1, -1): while stack and temperatures[stac原创 2022-04-30 15:38:23 · 471 阅读 · 0 评论 -
下一个更大元素II-栈503-python
循环数组的单调栈问题,可以通过两倍数组长度+取余操作模拟循环数组。class Solution: def nextGreaterElements(self, nums: List[int]) -> List[int]: n = len(nums) stack = [] res = [0] * n for i in range(2*n-1, -1, -1): pos = i % n原创 2022-04-30 15:23:54 · 492 阅读 · 0 评论 -
下一个更大元素I-栈496-python
没看答案,暴力解法,时间复杂度O(n^2)。class Solution: def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]: res = [] for i in nums1: pos = nums2.index(i) for num in nums2[pos:]:原创 2022-04-30 15:08:43 · 612 阅读 · 0 评论 -
逆波兰表达式求值-栈150-python
没看答案。import mathclass Solution: def evalRPN(self, tokens: List[str]) -> int: stack = [] # math.modf(x opt y)[0 or 1] 保留结果的小数部分:0,整数部分:1 opt = {'+': lambda x,y: x+y, '-': lambda x,y: x-y, '原创 2022-02-21 12:56:49 · 131 阅读 · 0 评论 -
删除字符串中的所有相邻重复项-栈1047-python
没看答案,python的栈就是列表。class Solution: def removeDuplicates(self, s: str) -> str: stack = [] i, n = 0, len(s) while i < n: if not stack: stack.append(s[i]) elif s[i] == stack[-1]:原创 2022-02-20 20:40:09 · 199 阅读 · 0 评论 -
用队列实现栈-栈与队列225-python
没看答案。class MyStack: def __init__(self): self.queue = [] self.length = 0 def push(self, x: int) -> None: self.queue.append(x) self.length += 1 def pop(self) -> int: num = self.queue.pop(-1)原创 2022-02-20 17:38:12 · 74 阅读 · 0 评论 -
用栈实现队列-栈与队列232-python
没看答案,用python的list就可容易实现每个操作的时间复杂度都是O(1)。class MyQueue: def __init__(self): self.stack = list() self.length = 0 def push(self, x: int) -> None: self.stack.append(x) self.length += 1 def pop(self) -> int:原创 2022-02-20 17:32:52 · 129 阅读 · 0 评论 -
比较含退格的字符串-字符串844-python
没看答案,用栈来实现class Solution: def substract(self, s: str, length: int): if length < 1: return s stack = [] i = 0 res = '' while i < length: if s[i] != '#': sta原创 2022-02-10 21:50:59 · 407 阅读 · 0 评论 -
滑动窗口的最大值-队列239-python&c++
python暴力法,遇到很大的输入数组时会超时。class Solution: def maxSlidingWindow(self, nums: List[int], size: int): n = len(nums) if size > n or size == 0: return [] res = [] left, right = 0, size-1原创 2021-08-17 17:41:14 · 64 阅读 · 0 评论 -
基本计算器I, II, III-栈224, 227, 772-python
pythonclass Solution: def cal(self, num1, num2, opt): if opt == '+': return int(num1) + int(num2) elif opt == '-': return int(num1) - int(num2) elif opt == '*': return int(num1) * int(num2)原创 2021-08-03 11:09:05 · 199 阅读 · 0 评论 -
包含min函数的栈-栈(剑指offer30)-python
pythonclass MinStack: def __init__(self): """ initialize your data structure here. """ self.stack = [] self.tmp = [] def push(self, x: int) -> None: if len(self.tmp) == 0 or self.tmp[-1] >= x原创 2021-08-01 13:00:29 · 105 阅读 · 0 评论 -
有效的括号-栈20-python&C++
python我们遍历给定的字符串s。当我们遇到一个左括号时,我们会期望在后续的遍历中,有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个左括号放入栈顶;当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。如果不是相同的类型,或者栈中并没有左括号,那么字符串s无效,返回False。为了快速判断括号的类型,我们可以使用哈希表存储每一种括号。哈希表的键为右括号,值为相同类型的左括号;在遍历结束后,如果栈中没有原创 2021-02-10 22:34:45 · 199 阅读 · 0 评论