当前位置: 首页 > news >正文

力扣——用栈实现队列

使用栈实现队列的下列操作:

  • push(x) -- 将一个元素放入队列的尾部。
  • pop() -- 从队列首部移除元素。
  • peek() -- 返回队列首部的元素。
  • empty() -- 返回队列是否为空。

示例:

MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);  
queue.peek();  // 返回 1
queue.pop();   // 返回 1
queue.empty(); // 返回 false

说明:

  • 你只能使用标准的栈操作 -- 也就是只有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。
class MyQueue {

    private Stack<Integer> stackPush;
    private Stack<Integer> stackPop;

    /** Initialize your data structure here. */
    public MyQueue() {
        stackPush = new Stack<Integer>();
        stackPop = new Stack<Integer>();
    }

    /** Push element x to the back of queue. */
    public void push(int x) {
        stackPush.push(x);
    }

    /** Removes the element from in front of queue and returns that element. */
    public int pop() {
        if(stackPop.empty()){
            while(!stackPush.empty()){
                stackPop.push(stackPush.pop());
            }
        }
        return stackPop.pop();
    }

    /** Get the front element. */
    public int peek() {
        if(stackPop.empty()){
            while(!stackPush.empty()){
                stackPop.push(stackPush.pop());
            }
        }
        return stackPop.peek();
    }

    /** Returns whether the queue is empty. */
    public boolean empty() {
        return stackPush.empty() && stackPop.empty();
    }
}


/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */

 

转载于:https://www.cnblogs.com/JAYPARK/p/10706990.html

相关文章:

  • 02 Anaconda的介绍,安装记以及使用
  • java集合之间的关系
  • java 坑总结
  • Swing 混合布局
  • vue 前端框架 (二) 表格增加搜索
  • 城市经纬度 json
  • P3356 火星探险问题
  • Redis序列化配置
  • BinaryTree
  • IO模式和IO多路复用详解
  • Educational Codeforces Round 5F. Expensive Strings
  • python对Excel表格操作
  • 流程控制之if判断
  • SpringBoot简单入门
  • Request的方法和数组
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 2017前端实习生面试总结
  • Angular 响应式表单 基础例子
  • Centos6.8 使用rpm安装mysql5.7
  • Debian下无root权限使用Python访问Oracle
  • django开发-定时任务的使用
  • export和import的用法总结
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java程序员幽默爆笑锦集
  • learning koa2.x
  • Next.js之基础概念(二)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 服务器之间,相同帐号,实现免密钥登录
  • 简单基于spring的redis配置(单机和集群模式)
  • 小而合理的前端理论:rscss和rsjs
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2)STM32单片机上位机
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (论文阅读11/100)Fast R-CNN
  • (南京观海微电子)——I3C协议介绍
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三) diretfbrc详解
  • (十一)图像的罗伯特梯度锐化
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)Java算法:二分查找
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)我也是一只IT小小鸟
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET 常见的偏门问题