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

225. 用队列实现栈 --力扣 --JAVA

题目

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop 和 empty)。

实现 MyStack 类:

  • void push(int x) 将元素 x 压入栈顶。
  • int pop() 移除并返回栈顶元素。
  • int top() 返回栈顶元素。
  • boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

注意:

  • 你只能使用队列的基本操作 —— 也就是 push to backpeek/pop from frontsize 和 is empty 这些操作。
  • 你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

解题思路一

  1. 队列是先进先出而栈是先进后出,所以需要在队列添加数据时对队列进行倒置;

代码展示

class MyStack {Queue<Integer> queue1 = null;Queue<Integer> queue2 = null;public MyStack() {queue1 = new LinkedList<>();queue2 = new LinkedList<>();}public void push(int x) {queue2.offer(x);while (!queue1.isEmpty()){queue2.offer(queue1.poll());}queue1 = queue2;queue2 = new LinkedList<>();}public int pop() {return queue1.poll();}public int top() {return queue1.peek();}public boolean empty() {return queue1.isEmpty();}
}

 解题思路二

  1. 利用ArrayDeque双向队列,可以利用自带的读取和删除末尾的值的方法实现队列的先进后出。

代码展示

class MyStack {ArrayDeque<Integer> queue = null;public MyStack() {queue = new ArrayDeque<>();}public void push(int x) {queue.addLast(x);}public int pop() {return queue.pollLast();}public int top() {return queue.peekLast();}public boolean empty() {return queue.isEmpty();}
}

相关文章:

  • linux下实现Qt程序实现开机自启动
  • LeetCode [简单](非递归)二叉树的中序遍历
  • Python爬虫遇到重定向URL问题时如何解决?
  • [密码学]DES
  • 【九日集训】第五天:排序
  • VSCode 代码调试
  • 使用Golang构建高性能网络爬虫
  • MGF4964BL-01 低噪声 InGaAs HEMT(高电子迁移率晶体管) K波段放大器 微X型塑料封装
  • C++模拟实现unordered_map和unordered_set
  • 【探索Linux】—— 强大的命令行工具 P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
  • C++基础 -21-多继承与多级继承
  • 记一篇Centos7安装innodb_ruby
  • 企业微信应用文本消息
  • Android笔记(十四):JetPack Compose中附带效应(一)
  • 华纳云:openstack nova中如何实现PCI透传功能
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 2017前端实习生面试总结
  • Android框架之Volley
  • css布局,左右固定中间自适应实现
  • Java,console输出实时的转向GUI textbox
  • JSONP原理
  • k8s如何管理Pod
  • LeetCode18.四数之和 JavaScript
  • Mithril.js 入门介绍
  • OSS Web直传 (文件图片)
  • Spring Boot MyBatis配置多种数据库
  • Vue.js-Day01
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 读懂package.json -- 依赖管理
  • 关于字符编码你应该知道的事情
  • ------- 计算机网络基础
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 面试总结JavaScript篇
  • 判断客户端类型,Android,iOS,PC
  • 浅谈web中前端模板引擎的使用
  • ​低代码平台的核心价值与优势
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (c语言)strcpy函数用法
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (算法)前K大的和
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原創) 物件導向與老子思想 (OO)
  • .bat批处理出现中文乱码的情况
  • .NET Reactor简单使用教程
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .Net中ListT 泛型转成DataTable、DataSet
  • ?
  • @Autowired @Resource @Qualifier的区别
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @RequestMapping用法详解