美文网首页
剑指Offer 5 :两个栈来实现队列(两个队列实现栈)

剑指Offer 5 :两个栈来实现队列(两个队列实现栈)

作者: clshinem | 来源:发表于2017-05-18 18:50 被阅读0次
题目:

是的,我又不想打了,如题

本身这个很基础,主要及时判断一下栈是不是空。但是因为OJ用的不熟练,所以写一个这个OJ

# -*- coding:utf-8 -*-
class Solution:
    def push(self, node):
        # write code here
    def pop(self):
        # return xx

1:不知道怎么把stack放进去,这个栈该放在这个类的哪里

def __init__(self):
    self.stack1 = []
    self.stack2 = []

2:就是剩下的事情了

def push(self, node):
    self.stack1.append(node)
def pop(self):
    if self.stack2:
        return self.stack2.pop()
    elif self.stack1:
        while self.stack1:
            self.stack2.append(self.stack1.pop())
        return self.stack2.pop()
    else:
        return None     

下面是用两个队列实现栈,不想写测试用例了,改天写一个再运行吧。大致思路如下

放入的时候放入那个不空的队列
出的时候要出的就剩一个,其他的放入另一个空队列中,然后把剩下的这一个return

class Solution:
    def __init__(self):
        self.queue1 = []
        self.queue2 = []
    def push(self,data):
        if self.queue1:
            self.queue1.append(data)
        elif self.queue2:
            self.queue2.append(data)
        else:
            self.queue1.qppend(data)
    def pop(self):
        if not self.queue1 and not self.queue2:
            return None
        elif not self.queue2:
            if len(self.queue1) == 1:
                return self.queue1.pop()
            else:
                while len(self.queue1) >1:
                    self.queue2.append(self.queue1.pop())
                return self.queue1.pop()
        else:
            if len(self.queue2) == 1:
                return self.queue2.pop()
            else:
                while len(self.queue2) >1:
                    self.queue1.append(self.queue2.pop())
                return self.queue2.pop()

相关文章

  • 剑指Offer(五)

    剑指Offer(五) 用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列...

  • 用两个栈实现队列,用两个队列实现堆栈

    参考:剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈 用两个栈实现队列stack1作为入...

  • LeetCode | 面试题09. 用两个栈实现队列【剑指Off

    LeetCode 面试题09. 用两个栈实现队列【剑指Offer】【Easy】【Python】【栈】【队列】 问题...

  • 两个栈实现一个队列

    《剑指offer》面试题9:两个栈实现队列 题目:用2个栈实现一个队列,完成队列的push和pop操作 思路:栈1...

  • 剑指offer第二版-9.用两个栈实现队列

    本系列导航:剑指offer(第二版)java实现导航帖 面试题9:用两个栈实现队列 题目要求:用两个栈,实现队列的...

  • 2019-03-14

    【编程题】 用两个栈实现队列 【剑指系列】用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为...

  • 用两个栈实现队列

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:栈 队列 题目描述: 用两个栈来实现一个队列,完成队...

  • 剑指offer第二版-用队列实现一个栈

    本系列导航:剑指offer(第二版)java实现导航帖 用队列实现一个栈题目要求:用两个队列,实现栈的从队尾插入元...

  • 两个队列实现一个栈

    《剑指offer》面试题9(相关题目):两个队列实现一个栈。 思路:入栈:如果队列1和队列2都为空,则将元素放入队...

  • Leetcode-232Implement Queue usin

    232. Implement Queue using Stacks && 剑指offer-用两个栈实现队列 Imp...

网友评论

      本文标题:剑指Offer 5 :两个栈来实现队列(两个队列实现栈)

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