Java中的栈和队列操作,相互实现(力扣 232, 225)

栈和队列(Java)

  • Java中的 栈 & 队列 操作
    • 栈的使用
    • 队列的使用
  • LeetCode 232. 用栈实现队列
    • 我的代码
  • LeetCode 225. 用队列实现栈
    • 我的代码

Java中的 栈 & 队列 操作

栈的使用

栈的方法功能
Stack()构造一个空的栈
E push(E e)将e入栈,并返回e
E pop()将栈顶元素出栈并返回
E peek()获取栈顶元素
int size()获取栈中有效元素个数
Boolean empty()检测栈是否为空
Stack<String> s = new Stack<>();
Stack<Intger> s2 = new Stack<>();

队列的使用

队列的方法功能
Boolean offer(E e)入队列
E poll()队头元素出队列并返回
E peek()获取队头元素
int size()获取队列中有效元素个数
Boolean isEmpty()检测队列是否为空

注意: Queue 是个接口,在实例化时必须实例化 LinkedList 的对象,因为 LinkedList 实现了 Queue 接口。

Queue<Integer> q = new LinkedList<>();

LeetCode 232. 用栈实现队列

出错点分析:
①栈的新建不会写、栈的操作方法不清楚
②可以看到 pop 和 peek 函数实现的逻辑都是一样的,很冗余,没有示例代码写的简洁

我的代码

class MyQueue {Stack<Integer> s1 = new Stack<>();Stack<Integer> s2 = new Stack<>();public MyQueue() {}public void push(int x) {s1.push(x);}public int pop() {while(s1.size() != 0) {int tmp = s1.pop();s2.push(tmp);}int ans = s2.pop();while(s2.size() != 0) {int tmp = s2.pop();s1.push(tmp);}return ans;}public int peek() {while(s1.size() != 0) {int tmp = s1.pop();s2.push(tmp);}int ans = s2.peek();while(s2.size() != 0) {int tmp = s2.pop();s1.push(tmp);}return ans;}public boolean empty() {return s1.empty();}
}

在这里插入图片描述

LeetCode 225. 用队列实现栈

出错点分析:
①队列的新建不会写、队列的操作方法不清楚
②可以看到 pop 和 top 函数实现的逻辑都是一样的,很冗余,没有示例代码写的简洁

我的代码

class MyStack {Queue<Integer> q1=new LinkedList<>();Queue<Integer> q2=new LinkedList<>();public MyStack() {}public void push(int x) {q1.offer(x);}public int pop() {//移除并返回栈顶元素。while(q1.size() != 1) {int tmp = q1.poll();q2.offer(tmp);}int ans = q1.poll();while(q2.size() != 0) {int tmp = q2.poll();q1.offer(tmp);}return ans;}public int top() {int ans = -1;//要赋初值while(q1.size() != 0) {int tmp = q1.poll();q2.offer(tmp);if(q1.size() == 0) { //是等于0的时候而不是等于1,因为poll操作暗含了size-1ans = tmp;}}while(q2.size() != 0) {int tmp = q2.poll();q1.offer(tmp);}return ans;}public boolean empty() {return q1.isEmpty();}
}

在这里插入图片描述

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

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

相关文章

与纸质合同相比,电子合同有哪些优势?

在无纸化办公的当下&#xff0c;电子合同软件成为了企业数字化转型必不可少的工具。而随着国内电子合同软件功能的完善&#xff0c;电子合同拥有便捷&#xff0c;安全&#xff0c;功能等要素&#xff0c;因此&#xff0c;电子合同是更多人的选择方式。 电子合同指的是双方或者多…

【卡梅德生物】单B细胞技术:牛单抗制备

1.牛单B细胞技术原理 单个B细胞抗体制备技术是近年来新发展的一类快速制备单克隆抗体的技术&#xff0c;基于流式细胞分选技术进行单B细胞单抗制备&#xff0c;利用每个B细胞只含有一个功能性重链可变区DNA序列和一个轻链可变区DNA序列且只产生一种特异性抗体的特性&#xff0c…

Linux的DNS域名解析服务

一.DNS基础 1.1 DNS简介 DNS域名系统 &#xff08;Domain Name System 缩写为&#xff1a;DNS&#xff09;是因特网的一项核心服务&#xff0c;它作为可以将 域名 和 IP地址 相互映射的一个分布式数据库&#xff0c;能够使人更加方便的访问互联网&#xff0c;而不用去记住能够…

依赖注入的优缺点与最佳实践

1 什么是依赖注入 依赖注入&#xff0c;全称Dependency Injection&#xff0c;简称DI。 在我们深入探讨之前&#xff0c;先来聊聊“依赖”和“注入”这两个比较术语的词。打个比方&#xff0c;你可以把“依赖”想象成电器设备的外接电线&#xff0c;而“注入”就像是把这根电…

专业课120+总分380+海南大学838信号与系统考研经验分享-电子信息,信息与通信,人工智能,生物医学

今年专业课120&#xff0c;总分380顺利被海大录取&#xff0c;总结一下这一年来的复习经验&#xff0c;希望对大家复习有借鉴。特别提醒这两年专业课海南大学838信号与系统难度比较大&#xff0c;还考察了IDTFT&#xff0c;DTFT等&#xff0c;对离散域的考察颇多&#xff0c;不…

简单二分图判定与最大匹配算法

前言 二分图&#xff0c;又称二部图&#xff0c;英文名叫 Bipartite graph。 通俗一点就是一个无向图如果能划成两个非空点集&#xff0c;且两部分内部没有边&#xff0c;则这是一张二分图。 如果从颜色的角度来说&#xff0c;就是把节点染成黑色/白色&#xff0c;并且使得没…

Python--函数

函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段。 函数能提高应用的模块性&#xff0c;和代码的重复利用率。你已经知道Python提供了许多内建函数&#xff0c;比如print()。但你也可以自己创建函数&#xff0c;这被叫做用户…

LeetCode刷题.14(不用算法解决1557. 可以到达所有点的最少点数目)

给你一个 有向无环图 &#xff0c; n 个节点编号为 0 到 n-1 &#xff0c;以及一个边数组 edges &#xff0c;其中 edges[i] [fromi, toi] 表示一条从点 fromi 到点 toi 的有向边。 找到最小的点集使得从这些点出发能到达图中所有点。题目保证解存在且唯一。 你可以以任意顺…

电脑桌面便签在哪里设置?Win10电脑桌面便签设置指南

很多上班族在使用Win10电脑办公时&#xff0c;需要随时记录工作事项。例如&#xff0c;需要参加一场紧急会议但时间不确定&#xff0c;或者在电话沟通时需要记下重要的信息&#xff0c;甚至可能是需要快速记录工作计划、想法或者临时安排的场景。在这些情况下&#xff0c;如果有…

opencv拉流出现missing picture in access unit with size 4错误解决

0、应用场景问题 我们使用opencv作为拉流客户端&#xff0c;获取画面后进行图像处理并推流&#xff08;使用ffmpeg库&#xff09;。 opencv解码同样使用ffmpeg库。 我们要求opencv能根据业务不断进行拉流操作&#xff0c;等效的逻辑代码如下&#xff1a; while(1) {printf(&…

【Spring 篇】基于注解的Spring事务控制详解

嗨&#xff0c;亲爱的读者朋友们&#xff01;欢迎来到这篇关于基于注解的Spring事务控制的博客。如果你曾为事务处理而头痛&#xff0c;那么这里将为你揭开事务的神秘面纱。我们将一步步深入探讨Spring事务的世界&#xff0c;用简单易懂的语言、充满情感色彩的文字&#xff0c;…

paddleocr的基本使用

paddleocr是paddlepaddle专门做ocr的库&#xff0c;我们简单用一下 参考 PaddleOCR—图片文字识别提取—快速使用教程_paddleocr使用教程-CSDN博客 目录 1 安装 1.1 前言 1.2 安装paddleocr 1.3 安装paddlepaddle 1.4 安装cuda 1.5 安装cudnn 1.6 配置 zlibwap…