队列和栈
leedcode 栈和队列刷题笔记
咕噜咕噜day
day day up!
展开
-
剑指offer【58】:翻转单词顺序
题目: 代码: 思路: class Solution: def reverseWords(self, s: str) -> str: # 首先去掉字符串首尾空格, i,j指针初始化在字符串末尾,用一个列表保存单词 s = s.strip() i = j = len(s) - 1 word_list = [] while i>=0: wh.原创 2020-06-13 00:15:06 · 129 阅读 · 0 评论 -
剑指offer【31】:判断栈的弹出序列是否正确
题目: 思路+代码: class Solution: def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool: # 思路:使用一个辅助栈,按照pushed顺序入栈,如果栈顶元素==弹出序列的当前元素,则全部出栈;这里弹出序列只是充当一个查询作用; test_stack = [] k = 0 for i in pushe原创 2020-06-10 14:59:16 · 156 阅读 · 0 评论 -
剑指offer【30】:实现包含min函数的栈
题目: 代码+思路: class MinStack: # 多加一个辅助栈,目的是维护一个非严格递增的序列 def __init__(self): self.A, self.B = [], [] # 一个元素过来,如果比B首的元素要小则入栈; def push(self, x: int) -> None: self.A.append(x) if not self.B or self.B[-1] >= .原创 2020-06-10 09:46:38 · 125 阅读 · 0 评论 -
Leedcode【225】:用队列实现栈,两种解法
题目: 解法一: from queue import Queue class MyStack: # 思路一: # 1.初始化一个队列为空,每次pop把另一个队列前n-1个元素,移动到为空的队列,然后输出最后一个元素,即为栈顶元素;一轮操作过后需要交换输入输出队列 # 2.push时,把最新进队列的元素标记为栈顶元素 def __init__(self): """ Initialize your data st.原创 2020-05-25 09:48:55 · 151 阅读 · 0 评论 -
leedcode【232】:用栈实现队列
题目: 思路+代码: class MyQueue: # 思路:用一个输入栈和一个输出栈去实现队列先入先出 # 1.由于list本质上是实现堆栈,初始化两个list,push时只用输入栈进行接收 # 2.pop和peek,时首先判空;然后整体对输出栈进行判断操作,如果输出栈为空则从输入栈进来后再进行输出 def __init__(self): """ Initialize your data structure.原创 2020-05-24 14:44:25 · 110 阅读 · 0 评论 -
Leedcode【20】:括号是否有效
题目: 思路+解答: class Solution: def isValid(self, s: str) -> bool: # 思路: # 1.首先判断只是双引号的空字符串是有效的 # 2.利用字典映射key=右括号, value为左括号使得括号匹配更方便; # 3.利用栈,左括号入栈,当为右括号时,判断异常:栈是否为空或栈顶元素是否与右括号匹配,如果正确匹配则不管; if s原创 2020-05-24 11:32:48 · 95 阅读 · 0 评论