数据结构 栈 / 队列(第9天)
  TEZNKK3IfmPf 2023年11月15日 31 0

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)
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月14日   26   0   0
TEZNKK3IfmPf