zoukankan      html  css  js  c++  java
  • 剑指offer用两个栈实现队列python

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    思路

    定义两个栈stack1,stack2,stack1负责存数据,stack2负责辅助完成队列的弹出。stack1维持一个队列的顺序,stack1栈底数据是最先压入的,弹出的时候,应该是最先被弹出的。我们弹出的时候,把stack1栈顶数据依次压入stack2,这样的话,最先在stack1栈底的数据会到stack2的栈顶,用stack2的pop方法自然就弹出该数据。只是要注意,弹出之后,为了防止新进入stack1的元素再压入stack2到stack2表面,破坏了队列的顺序,每一次stack2弹出栈顶元素后,需要再把stack2的元素重新压回到stack1里面。

    push操作:按栈存储压入stack1

    pop操作:如果stack1为空,错误

         stack1不为空,将stack1全部压入stack2,再用pop方法弹出,再把stack2全部压入stack1

    代码

    # -*- coding:utf-8 -*-
    class Solution:
        def __init__(self):
            self.stack1 = []
            self.stack2 = []
            
        def push(self, node):
            self.stack1.append(node)
            
        def pop(self):
            if self.stack1 is None:
                return None
            while self.stack1:
                self.stack2.append(self.stack1.pop())
            temp = self.stack2.pop()
            while self.stack2:
                self.stack1.append(self.stack2.pop())
            return temp
  • 相关阅读:
    加入创业公司有什么利弊
    Find Minimum in Rotated Sorted Array II
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Find Minimum in Rotated Sorted Array
    Remove Duplicates from Sorted Array
    Spiral Matrix
    Spiral Matrix II
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/wangzhihang/p/11780964.html
Copyright © 2011-2022 走看看