用栈实现队列

描述

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

思路

代码实现

public class MyQueue {
    
    private Stack<Integer> stack1;
    private Stack<Integer> stack2;

    public MyQueue() {
           stack1 = new Stack<Integer>();
           stack2 = new Stack<Integer>();
    }

    public void stack2ToStack1() {
        while (! stack2.empty()) {
            stack1.push(stack2.pop());
        }
    }
    public void push(int element) {
        stack2.push(element);
    }

    public int pop() {
        if (stack1.empty() == true) {
            this.stack2ToStack1();
        }
        return stack1.pop();
    }

    public int top() {
        if (stack1.empty() == true) {
            this.stack2ToStack1();
        }
        return stack1.peek();
    }

}

原题地址

牛客网:用两个栈实现队列

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 二叉树的最大深度

    一份执着✘
  • 删除元素

    一份执着✘
  • 快乐数

    一份执着✘
  • 设计模式-适配器模式

    用户5927264
  • 第三阶段-Java常见对象:【第八章 System类】

    System.gc() 可用于垃圾回收.当使用System.gc() 回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源,在没有明确指定资源清理...

    BWH_Steven
  • .NET Core微服务之基于Polly+AspectCore实现熔断与降级机制

      在广义的解释中,熔断主要是指为控制股票、期货或其他金融衍生产品的交易风险,为其单日价格波动幅度规定区间限制,一旦成交价触及区间上下限,交易则自动中断一段时间...

    Edison Zhou
  • Kafka之拦截器Interceptor

        使用场景:我们可以在Producer端统一拦截,加上处理时间,再在consumer端统一拦截统计端到端的处理时间,这也是一种监控方式。

    克虏伯
  • 设计模式之十(外观模式)

    外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用.

    aehyok
  • Java中的深复制和浅赋值

    深复制和浅复制也称为深拷贝和浅拷贝。简单的说就是创建一个和当前对象一模一样的对象。在日常编码的过程中使用的几率并不多,但在面试中却会被经常问到。

    老九学堂-小师弟
  • (70) 原子变量和CAS / 计算机程序的思维逻辑

    从本节开始,我们探讨Java并发工具包java.util.concurrent中的内容,本节先介绍最基本的原子变量及其背后的原理和思维。 原子变量 什么是原子...

    swiftma

扫码关注云+社区

领取腾讯云代金券