美文网首页
栈和队列

栈和队列

作者: sparkshen | 来源:发表于2020-02-15 12:33 被阅读0次
  1. 判断括号是否匹配:字符串中只含括号,如][],[{}], ()[]{[]}。
    当遇到一个字符的时候,由两条规则判断接下去做什么(跟背法律条文一样):
    a. 字符不是闭合括号,则进栈
    b. 栈为空或者 字符是不匹配的左括号,就说明不合法的字符串
is_valid(self, s):
    stack = []
    param_map = {')':'(', ']':'[', '}':'{'}
    for c in s:
        if c not in param_map:
            stack.append(c)
        elif not stack or param_map[c] != stack.pop():
            return False
    return not stack
  1. 使用栈/队列,实现队列/栈 - 来回倒腾。push方法都一样,主要是pop和top。两个循环,第一个循环,一个个元素倒入第二个数组,但要留下最后一个元素,用作返回,所以是 length>1。然后穿插一个语句,取出最后一个元素,用作返回。接下来,第二个循环,再把所有元素倒腾回去,准备下一次pop/top
#用栈表示队列,两个循环,中间穿插有个取数
class TestStack(object):
    def __init__(self):
        self.stack = []

    def push(self, u):
        self.stack.append(u)

    def pop(self):
        if self.is_empty:
            return None
        return self.stack.pop()

    @property
    def length(self):
        return len(self.stack)

    @property
    def is_empty(self):
        return self.length == 0

class TestQueue:
    def __init__(self):
        self.stack1 = TestStack()
        self.statck2 = TestStack()

    def push(self, u):
        self.stack1.push(u)

    def pop(self):
        while self.stack1.length > 1:
            self.statck2.push(self.stack1.pop())

        result = self.stack1.pop()

        while not self.statck2.is_empty:
            self.stack1.push(self.statck2.pop())

        return result

相关文章

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 栈和队列

    用栈定义队列(出入栈) 用队列定义栈(数据队列和辅助队列)

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 栈和队列

    栈和队列 本质上是稍加限制的线性表 栈和队列定义 栈顺序栈定义 链栈结点定义 队列顺序队列 链队列链队类型定义 链...

  • Python实现栈和队列以及使用list模拟栈和队列

    Python实现栈和队列 Python使用list模拟栈和队列

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

  • 算法分析 [BFS、Greedy贪心] 2019-02-18

    队列 和 栈 232. 用栈实现队列 Implement Queue using Stacks双栈,出队列时,将i...

  • 实 验 四 栈和队列

    一、实验目的与要求:## 1、理解栈和队列抽象数据类型。 2、掌握栈和队列的存储结构和操作实现。 3、理解栈和队列...

  • 栈、队列和链表

    基本数据结构 栈和队列 栈和队列都是动态集合。栈实现的是一种后进先出策略。队列是一种先进先出策略。 栈 栈上的in...

  • 算法导论 基本数据结构

    MIT公开课没有讲到的内容,介绍几种基本数据结构- 栈和队列- 链表- 二叉树 栈和队列 栈和队列都是动态集合,元...

网友评论

      本文标题:栈和队列

      本文链接:https://www.haomeiwen.com/subject/zhvefhtx.html