JAVA队列相关习题4

1. 用队列实现栈。

225. 用队列实现栈 - 力扣(LeetCode)

一个队列无法实现栈

尝试使用两个队列 

1)push元素的时候应当放在那里?哪个队列不为空就放在哪里

2)出栈的时候,出不为空的队列size-1元素,剩余元素是要出栈的元素

import java.util.LinkedList;
import java.util.Queue;class MyStack {private Queue<Integer> qu1;private Queue<Integer> qu2;public MyStack() {qu1 = new LinkedList<>();qu2 = new LinkedList<>();}public void push(int x) {//放到不为空的队列if(!qu1.isEmpty()) {qu1.offer(x);}else if(!qu2.isEmpty()) {qu2.offer(x);}else {//如果都是空的 放到第一个qu1.offer(x);}}public int pop() {//两个队列都是空的: 栈为空if(empty()) {return -1;}if(!qu1.isEmpty()) {int currentSize = qu1.size();for (int i = 0; i < currentSize-1; i++) {int x = qu1.poll();qu2.offer(x);}return qu1.poll();//最后一个数据返回}if(!qu2.isEmpty()) {int currentSize = qu2.size();for (int i = 0; i < currentSize-1; i++) {int x = qu2.poll();qu1.offer(x);}return qu2.poll();//最后一个数据返回}return -1;}//peek方法public int top() {if(empty()) {return -1;}if(!qu1.isEmpty()) {int currentSize = qu1.size();int x = -1;for (int i = 0; i < currentSize; i++) {x = qu1.poll();qu2.offer(x);}return x;//最后一个数据返回}if(!qu2.isEmpty()) {int currentSize = qu2.size();int x = -1;for (int i = 0; i < currentSize; i++) {x = qu2.poll();qu1.offer(x);}return x;//最后一个数据返回}return -1;}public boolean empty() {return qu1.isEmpty() && qu2.isEmpty();}
}

2.用栈实现队列。

. - 力扣(LeetCode)

class MyQueue {//定义两个栈private Stack<Integer> s1;private Stack<Integer> s2;//入的时候统一入到s1中//出的时候统一出到s2中//实例化两个栈public MyQueue() {s1=new Stack<>();s2=new Stack<>();}public void push(int x) {s1.push(x);}public int pop() {if(empty()){return -1;}if(s2.empty()){while(!s1.empty()){s2.push(s1.pop());}}return s2.pop();}public int peek() {if(s1.empty()){return -1;}if(s2.empty()){while(!s1.empty()){s2.push(s1.pop());}}return s2.peek();}public boolean empty() {return s1.empty()&&s2.empty();}
}

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

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

相关文章

01-new SpringApplication

准备配置Bean Configuration public class TestSpringApplication {static class Bean1 {}static class Bean2 {}static class Bean3 {}Beanpublic Bean2 bean2() {return new Bean2();}Beanpublic TomcatServletWebServerFactory tomcatServletWebServerFactory() {return ne…

去哪找高清视频素材?哪个网站有视频素材?

在这个视觉表达日益重要的时代&#xff0c;获取高品质的视频素材变得尤为关键。4K和无水印视频素材特别受到创作者的青睐&#xff0c;因为它们能极大地提升视觉作品的吸引力和专业度。接下来&#xff0c;我将介绍几个国内外的优秀视频素材网站&#xff0c;助您在创作旅程上一帆…

解决springboot项目的网站静态页面显示不全问题

在通过springboot搭建项目时&#xff0c;为了能够访问静态的前端页面&#xff0c;我们考虑到访问的优先级问题&#xff0c;通常选择将资源放在recourses/static的目录下&#xff0c;如下&#xff1a; 这时可能会出现类似于下面这种图片无法加载、没有按照指定位置显示的情况&am…

代码随想录算法训练营第六十二天|503.下一个更大元素II、 42. 接雨水

单调栈 文章目录 一、下一个更大元素II二、接雨水总结 一、下一个更大元素II 1.数组扩展一倍计算 2.模拟遍历两边nums&#xff0c;用i % nums.size()来操作 class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {//暴力解法&#x…

第四十节实现主人公的技能释放功能(二)实现技能按钮

看看我们今天要实现的效果是&#xff0c;当我们按下数字1快捷键&#xff0c;我们的技能按钮会进入倒计时&#xff0c;如下图演示&#xff1a; 一、新建场景和根节点设置 新建场景&#xff0c;选择TextureButton作为根节点&#xff0c;重名为SpellButton&#xff0c;保存场景…

程序员的实用神器——高效软件开发的秘诀

目录 前言 一、自动化测试工具 &#xff08;一&#xff09;常用的自动化测试工具 &#xff08;二&#xff09;编写有效的测试用例的建议 &#xff08;三&#xff09;提高代码覆盖率的方法 二、持续集成/持续部署 &#xff08;一&#xff09;持续集成&#xff08;CI&#…

前端面试题 | new 操作符的原理 |(对象的原型 及其用途)

问题&#xff1a;new操作符具体干了什么&#xff1f; 总结&#xff1a; 在JavaScript中&#xff0c;new操作符 用于创建一个新的对象实例。 作用是 ①创建一个空对象 ②将这个新对象的隐式原型指向构造函数的显式原型 ③它将构造函数的this指向这个新对象&#xff0c;并执行构造…

pyinstaller 不是内部或外部命令,也不是可运行的程序或批处理文件的解决办法(详细)

首先我们需要查看是否安装了pyinstaller &#xff0c;可以在命令窗口输入命令pip list检查是否安装成功&#xff0c; 这里我们可以看见已经安装成功了的&#xff0c;如果没有安装可以执行安装命令 pip install pyinstaller 进行安装即可。 下一步我们排查pyinstaller的安装路…

LeetCode 139 —— 单词拆分

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 定义 d p [ i ] dp[i] dp[i] 表示 s [ 0 , i ] s[0, i] s[0,i] 是否可以被字典中出现的单词拼接&#xff0c;那么状态转移方程为&#xff1a; d p [ i ] t r u e &#xff0c;如果存在任意 j ∈ [ 0 , i − 1…

spring源码分析之AOP开启注解

AOP开启注解 在使用注解Aspect来进行AOP操作时&#xff0c;需要在xml中进行配置 <!-- 使Aspect注解生效 --><aop:aspectj-autoproxy/> 创建BeanFactory时obtainFreshBeanFactory()在解析xml加载BeanDefinition中&#xff0c;执行parseBeanDefinitions方法进行解析发…

Springboot+vue项目零食销售商城

摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;零食销售商城当然也不能排除在外。零食销售商城是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff…

Verilog 触发器状态机语言描述

触发器状态机语言描述 触发器状态机语言用于描述映射到 ILA 调试核的高级触发器逻辑的复杂触发条件。触发器状态机具有下列特性 &#xff1a; • 最多 16 种状态。 • 用于复杂状态转换的单向、双向和三向条件分支。 • 4 个内置 16 位计数器 &#xff0c; 用于对事件…

Golang编译优化——稀疏条件常量传播

文章目录 一、概述二、稀疏条件常量传播2.1 初始化worklist2.2 构建def-use链2.3 更新值的lattice2.4 传播constant值2.5 替换no-constant值 一、概述 常量传播&#xff08;constant propagation&#xff09;是一种转换&#xff0c;对于给定的关于某个变量 x x x和一个常量 c …

浙江大学 → PAT 1012:数字分类

【题目来源】https://pintia.cn/problem-sets/994805260223102976/exam/problems/type/7?problemSetProblemId994805311146147840&page0【题目描述】 给定一系列正整数&#xff0c;请按要求对数字进行分类&#xff0c;并输出以下 5 个数字&#xff1a; A1​ 能被 5 整除…

《米小圈上学记》|快乐读书,从身边的人身边的事开始!

时间&#xff0c;抓住了就是黄金&#xff0c;虚度了就是流水;书&#xff0c;看了就是学问&#xff0c;没看就是废纸:抱负&#xff0c;努力了才叫幻想&#xff0c;放弃了那只是妄想。读书&#xff0c;不一定能转变命运&#xff0c;但肯定能让我们安静&#xff0c;安静本身就是一…

js/ts全栈开发 t3 stack

技术栈 React Vite TailwindCSS / Nestjs TRPC Prisma(SQLite) / Docker GitHub: https://github.com/cooderl/react-nestjs-full-web-app t3 stack The T3 Stack is a web development stack made by Theo focused on simplicity, modularity, and full-stack type safet…

红米1s 刷入魔趣 (Mokee)ROM(Android 7.1)

目录 背景准备工具硬件&#xff08;自己准备&#xff09;软件&#xff08;我会在文末提供链接&#xff09; 刷机步骤1. 重启电脑2. 安装驱动3. 刷入TWRP4. 清空数据5. 刷入魔趣6. 开机 结尾下载链接 本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 B…

Ubuntu 22.04 下 Pycharm 卸载

由于调试原因&#xff0c;Ubuntu22 下重装Pycharm 1.卸载 PyCharm 删除以下几个目录&#xff1a; 1) 程序文件目录 所有的相关文件都保存在解压缩的目录中&#xff0c; /opt/pycharm-community/ $ sudo rm -r /opt/pycharm-community/ 2) 配置文件目录 启动 PyCharm 后&…

虚拟机jvm下

jvm原理与实践 java程序的跨平台特性 jvm基本结构 JVM类加载流程和内存结构总览 类加载 加载阶段 类加载 验证阶段 类加载 准备阶段 类加载 解析阶段 类加载 初始化阶段 程序计数器 虚拟机栈&本地方法栈 栈帧操作 堆 方法区 永久代 元空间 垃圾回收 可触及性

C#面:C# 是否可以对内存直接进行操作

在C#中&#xff0c;可以通过使用指针来对内存进行直接操作。 使用 unsafe 关键字来支持指针操作&#xff0c;并且需要在项目属性中启用选项&#xff1a;允许不安全代码。使用指针可以绕过 C# 的类型安全检查&#xff0c;因此需要谨慎使用&#xff0c;并且只有在必要的情况下才…