数据结构 栈 / 队列(第9天)

简介: 数据结构 栈 / 队列(第9天)

20. 有效的括号

判断输入的括号是否有效。

左右括号··能闭合,顺序合适。

思路:用栈实现。遇到左括号就保存在栈中,遇到右括号则需要从栈中弹出一个括号,与之配对。

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        pairs = {
                '(' : ')',
                '[' : ']',
                '{' : '}'
                }
        for c in s:
            if c in  pairs.keys() :
                stack.append(c)
            else:
                if len(stack) == 0:
                    return False
                left = stack.pop()
                if c != pairs.get(left) :  
                    return False
        return len(stack) == 0

232. 用栈实现队列

用栈实现队列(先进先出)。

思路:

栈是先进后出的,所以用一个栈显然无法实现。

用两个栈,一个栈stackin用来保存进来的元素,一个栈stackout用来输出元素。

输入元素时,添加到stackin,输出元素时,将stackin的所有元素添加到stackout,再从stackout输出。

这样相当于负负得正。

class MyQueue:

    def __init__(self):
        self.stackin  = []
        self.stackout = []


    def push(self, x: int) -> None:
        self.stackin.append(x)


    def pop(self) -> int:
        if self.empty():
            return None
        if not self.stackout:
            while self.stackin:
                self.stackout.append(self.stackin.pop())
        return self.stackout.pop()


    def peek(self) -> int:
        res = self.pop()
        self.stackout.append(res)
        return res


    def empty(self) -> bool:
        return not (self.stackin or self.stackout)

相关文章
|
1天前
|
C++
【洛谷 P1044】[NOIP2003 普及组] 栈 题解(递归+记忆化搜索)
**NOIP2003普及组栈问题**:给定操作数序列1到n,仅允许push(进栈)和pop(出栈)操作。目标是计算所有可能的输出序列总数。输入包含一个整数n(1≤n≤18)。示例输入3,输出5。当队列空时返回1,栈空则只能入栈,栈非空时可入栈或出栈。AC C++代码利用记忆化搜索求解。
5 1
|
3天前
|
算法
$停车场管理系统 栈与队列
$停车场管理系统 栈与队列
5 1
|
1天前
|
算法 Java 机器人
Java数据结构与算法:线性数据结构之栈
Java数据结构与算法:线性数据结构之栈
|
1天前
|
存储 机器人 Java
堆和栈的区别
堆和栈的区别
|
1天前
|
C++
【洛谷 P1739】表达式括号匹配 题解(栈)
该编程题目要求检查给定的包含字母、运算符和括号的表达式是否括号匹配。输入为一行表达式,以`@`结束。如果括号匹配,输出`YES`,否则输出`NO`。样例包括一个匹配和一个不匹配的表达式。解决方案是使用栈,遇到左括号入栈,遇到右括号时判断栈是否为空,栈空则输出`NO`,否则出栈。当读到`@`时,栈空则输出`YES`,否则输出`NO`。提供的AC代码使用C++实现,通过`stack`处理括号匹配。
4 0
|
1天前
|
Python
数据结构===队列
数据结构===队列
|
1天前
|
存储 Java Python
数据结构===栈
数据结构===栈
|
2天前
|
索引
栈的数组实现
栈的数组实现
4 0
|
4天前
|
存储 缓存 算法