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();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量子芯片:引领计算技术的新篇章

量子芯片:引领计算技术的新篇章 引言 随着量子计算的飞速发展,量子芯片作为量子计算机的核心组件,日益受到人们的关注。量子芯片的出现,不仅有望推动计算技术的革新,更将在信息安全、药物研发、金融投资等领域掀起巨大的变革。在本篇博客中,我们将深入探讨量子芯片的原理…

大数据-之LibrA数据库系统告警处理(ALM-37015 Gaussdb进程可用文件句柄资源不足)

告警解释 操作系统环境文件句柄不足时&#xff0c;产生该告警。 告警属性 告警ID 告警级别 可自动清除 37015 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Instance 产生告警…

使用STM32微控制器实现烟雾传感器的接口和数据处理

烟雾传感器是常见的安全检测装置&#xff0c;通过检测空气中的烟雾浓度来提醒用户有潜在的火灾风险。本文将介绍如何使用STM32微控制器来实现烟雾传感器的接口和数据处理。包括硬件连接、采集模拟信号、数字信号处理和报警策略等方面。同时&#xff0c;给出相应的代码示例。 一…

mac 聚焦搜索不显示

我是连搜索框都不显示&#xff0c;不是搜索结果显示异常 点右上角的搜索按钮都毫无反应 我检查过快捷键之类的设置&#xff0c;都正常&#xff0c;最后是通过删除文件解决的 cd ~/Library/Preferences/ rm com.apple.Spotlight.plist 重启 mac 参考 Spotlight Search Not W…

Spring Application Event 在事件驱动设计中的应用

1. 什么是事件驱动设计 我们先从去餐厅吃饭来辅助理解什么是事件驱动设计&#xff0c;我们从点菜到上菜通常涉及到以下角色&#xff1a; 服务员厨师上菜员 不同角色的职责&#xff1a; 服务员负责协助点餐厨师负责制作菜品上菜员负责上菜 我们通过事件的角度来考虑整个流程…

Unity引擎:创造无限可能的游戏开发平台

Unity引擎&#xff1a;创造无限可能的游戏开发平台 一、Unity引擎概述1.1 什么是Unity引擎&#xff1f;1.2 Unity引擎的特点和优势 二、Unity开发环境和工具2.1 Unity编辑器2.2 支持的平台2.3 脚本语言2.4 图形和音频工具 三、Unity游戏开发流程四、示例应用场景五、结论&#…

设计模式 -职责链模式

定义 职责链模式是一种对象行为型模式&#xff0c;它常用于处理具有多个处理者的请求。在一个软件系统中&#xff0c;当一个请求可以被多个对象处理时&#xff0c;这些对象可以组织成一条链&#xff0c;并按照这个链传递请求&#xff0c;从而实现了请求发送者和请求处理者之间…

Java JDK 和 JRE 有什么区别

Java JDK 和 JRE 有什么区别 在Java开发中&#xff0c;Java Development Kit&#xff08;JDK&#xff09;和Java Runtime Environment&#xff08;JRE&#xff09;是两个关键的概念&#xff0c;它们之间存在一些区别。 Java Development Kit (JDK)&#xff1a; 用途&#xff1…

HTML h1和h2的三点区别

HTML中的h1和h2 HTML中&#xff0c;h1和h2都是标题元素&#xff0c;二者的关系可以说是递进或递减的关系&#xff0c;如何理解呢&#xff1f;&#xff0c;HTML文档定义的网页一般会被设计成具有一定的结构&#xff0c;而且通常是具有清晰的结构&#xff0c;比如都具有一个主题…

vmware下ubuntu 22.04从主机复制出错

原因分析 vmware下ubuntu 22.04从主机复制出错&#xff0c;如果确定安装了vmware-tools而且重装之后无法解决&#xff0c;大概率是因为vmware-tools和wayland冲突&#xff08;ubuntu 22.04默认使用wayland而不是xorg&#xff09; wayland vs xorg Xorg是X窗口系统的最新版本&…

MySQL-函数

一、统计函数 CREATE TABLE student (id INT NOT NULL DEFAULT 1,name varchar(20) not null default ,chinese float not null default 0.0,english float not null default 0.0,math float not null default 0.0 );insert into student values (1,曹操,77,89,85);insert int…

Vue3中watch和watchEffect的区别及使用场景

Vue3 中 watch 和 watchEffec t的区别及使用场景 在Vue 3中&#xff0c;watch和watchEffect是用于监听响应式数据变化的两个重要API。它们在使用方式和功能上有一些区别&#xff0c;下面将从不同方面进行比较。 1. 使用方式 watch的使用方式是通过在组件选项中定义一个watch…

centos7上源码安装mysql--运维高级

第一步,安装必要的依赖: yum install -y cmake ncurses-devel bison gcc gcc-c make unzip libaio numactl 第二步,创建mysql用户和组: wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18.tar.gz tar zxvf mysql-5.7.18.tar.gz 第三步,下载MySQL 5.7.18 源码…

postgres在docker中使用

记录个人开发过程中postgres在docker中的使用&#xff0c;以便后续查看。 Dockerfile 个人是在M1电脑上开发&#xff0c;所以platform使用linux/amd64来兼容amd芯片。 FROM --platformlinux/amd64 postgres:16.1-alpine COPY ./poetrydb.sql /docker-entrypoint-initdb.d/po…

Jenkins 如何查看已经记录登录服务器的凭证密码

文章目录 一、背景描述二、解决方案一&#xff08;查看所有账号密码&#xff09;三、解决方案二&#xff08;查询指定账号密码&#xff09; 一、背景描述 在日常的开发过程中&#xff0c;有时候会出现忘记开发、测试服务器的登录密码的情况。此时恰巧 Jenkins 上记录了登录该主…

【笔记】windows+pytorch:部署一下stable diffusion和NeRF

之前都是 *nix 环境使用 pytorch&#xff0c;这次尝试了一下windows。 我们来部署下流行性高的stable diffusion和我觉得实用性比stable diffusion高多了的NeRF Stable Diffusion 其实&#xff0c;我也不知道要写啥&#xff0c;都是按照步骤做就好了&#xff0c;后面等有时间…

如何快速生成项目目录结构树?

经常在网上看到下面这种由一个项目&#xff0c;生成一个结构树&#xff0c;你知道它是怎么生成的吗&#xff1f; 这就是利用本文要介绍的一个工具——Treer&#xff0c;treer就是一款专门用来快速生成目录结构树的命令行工具。 第一步&#xff1a;安装treer 在终端执行全局…

openssl 生成CA及相关证书

生成私钥文件(pem) # 生成私钥 # genrsa&#xff1a;生成RSA秘钥 # 2048&#xff1a;密钥长度为2048比特 # -out&#xff1a;私钥文件路径名 openssl genrsa -out ca_private.pem 2048 # 生成私钥&#xff0c;且加密 # -aes256&#xff1a;使用aes256对私钥进行加密 openssl g…

蓝桥杯第199题 扫地机器人 暴力优化 二分法 简单题 C++

题目 扫地机器人 - 蓝桥云课 (lanqiao.cn)https://www.lanqiao.cn/problems/199/learning/?page1&first_category_id1&name%E6%89%AB%E5%9C%B0%E6%9C%BA%E5%99%A8%E4%BA%BA 思路和解题方法 首先&#xff0c;通过cin语句输入了终点位置n和障碍物数量k。使用一个数组a来…

微服务学习|初识elasticsearch、操作索引库、文档操作、RestClient操作索引库、RestClient操作文档

初识elasticsearch 什么是elasticsearch&#xff1f; elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack (ELK)。被广泛应用在日志数据分析、实…