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

LeetCode.232. 用栈实现队列

题目

232. 用栈实现队列

分析

先了解一下栈和队列的特点:

  • 栈:先进后出
  • 队列:先进先出

想用栈实现队列的特点,就需要使用两个栈。因为两个栈就可以将列表倒序。
假设第一个栈 s1 = [1,2,3],第二个栈 s2 = [] 。若循环执行 s1元素出栈并且添加到栈 s2直到栈 s1为空,则s1 = []s2 = [3,2,1],即栈s2元素为栈s1元素倒序。

最终方法:

  1. 加入元素的时候,只往栈s1里面加入。
  2. 弹出元素的时候,先弹出栈s2里面的元素,如果s2为空,则把s1里面的元素放入s2,然后弹出s2的元素。
  3. 判断是否为空,s1s2同时为空,才为空

代码

class MyQueue {Stack<Integer> s1;Stack<Integer> s2;public MyQueue() {s1 = new Stack<>();s2 = new Stack<>();}public void push(int x) {s1.push(x);}public int pop() {if(!s2.isEmpty()) return s2.pop();if(!s1.isEmpty()) {while(!s1.isEmpty()) {s2.push(s1.pop());}return s2.pop();}return -1;}public int peek() {if(!s2.isEmpty()) return s2.peek();if(!s1.isEmpty()) {while(!s1.isEmpty()) {s2.push(s1.pop());}return s2.peek();}return -1;}public boolean empty() {return s2.isEmpty() && s1.isEmpty();}
}/*** 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();*/

在这里插入图片描述

http://www.lryc.cn/news/312788.html

相关文章:

  • SpringBoot集成ElasticSearch(ES)
  • 基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示应用
  • Qt插件之输入法插件的构建和使用(一)
  • 慢SQL调优-索引详解
  • 知乎语音下载(mediadown)
  • 2023 最新 IntelliJ IDEA 2023.3 详细配置步骤演示:新入职如何快速配置 IntelliJ IDEA?
  • Linux 下安装 Git
  • Manomotion 实现AR手势互动-解决手势无效的问题
  • 第十五届蓝桥杯第三期模拟赛(Java)
  • vscode中eslint插件不生效问题
  • Go程序是如何编译并运行起来的(图文详解)
  • 程序员如何选择职业赛道
  • GOWIN软件使用
  • Ajax (1)
  • Python基础语法:基本数据类型(数字类型和布尔类型)
  • springboot 下载 Excel 文件的 Controller 层案例
  • RabbitMQ队列
  • Day12:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
  • 使用正确的技术和项目管理工具来定义项目范围
  • 【C++】类型转换和IO流
  • leetCode刷题 5.最长回文子串
  • 计算机组成原理面试题
  • 「Mybatis深入三」:高级查询-模糊查询
  • LabVIEW管道缺陷智能检测系统
  • java在cmd中乱码的问题解决
  • OpenHarmony教程指南—ArkUI中组件、通用、动画、全局方法的集合
  • 第二证券|金价逼近历史高点 黄金股价值有望重估
  • 关于51单片机晶振定时问题
  • NoSQL--2.MongoDB配置(Windows版)
  • HTML静态网页成品作业(HTML+CSS)——安徽宣笔设计制作(5个页面)