[剑指offer] 5. 用两个栈实现队列 (队列 栈)

思路:

队列是先进先出 , 在stack2里逆序放置stack1的元素,然后stack2.pop()

 但是当s1,s2都有元素时,应该优先s2.pop(),否则会报错,最好是各种模拟s1,s2的数据情况

不过说是用两个栈实现,但这里其实也是两个List

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1=[]
        self.stack2=[]
    def push(self, node):
        # write code here
        self.stack1.append(node)
    def pop(self):
        # return xx
        # 思路就是在stack2里逆序放置stack1的元素,然后stack2.pop()
        # 但是当s1,s2都有元素时,应该优先s2.pop()
        if self.stack2==[]:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()
        return self.stack2.pop()
  • 两个栈在函数里,注意自己要事先定义,初始化
  • 一定是 self.stack,直接用stack会报错,未定义

猜你喜欢

转载自www.cnblogs.com/nicetoseeyou/p/10447674.html