剑指offer面试题7——用两个栈实现队列

2024-05-14 13:48

本文主要是介绍剑指offer面试题7——用两个栈实现队列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

package offer7;import common.Stack;/*** 用两个栈实现一个队列* @author chibozhou*/
public class Queue<T> {//队列当前大小private int curSize;//队列最大容量private int maxSize;//两个栈private Stack<T> stack1;private Stack<T> stack2;/*** 初始化队列* @param maxSize 设置最大容量*/public Queue(int maxSize){//健壮性判断if(maxSize<=0){System.out.println("队列大小不能小于1");return;}//初始化栈stack1 = new Stack<T>(maxSize);stack2 = new Stack<T>(maxSize);this.maxSize = maxSize;}/*** 入队 * @param obj 入队的元素*/public boolean push(T obj){//健壮性判断if(obj==null){System.out.println("入队元素不能为空!");return false;}//队已满if(stack1.getCurSize()>=maxSize){System.out.println("队以满!");return false;}//入队stack1.push(obj);curSize++;return true;}/*** 出队*/public T pop(){//对为空if(curSize==0){System.out.println("队为空!");return null;}//将stack1中的所有元素转移到stack2中,再从stack2栈顶取元素即可while(stack1.getCurSize()>0){stack2.push(stack1.pop());}return stack2.pop();}/*** 打印队列*/@Overridepublic String toString() {System.out.println("Queue---maxSize:"+maxSize+"---curSize:"+curSize+"------");//队列为空if(curSize==0){System.out.println("队列为空");return null;}//若数据都在stack1中,则转到stack2中if(stack1.getCurSize()>=0){while(stack1.getCurSize()>0){stack2.push(stack1.pop());}}//打印stack2中的元素for(int i=0;i<stack2.getCurSize();i++){System.out.println(stack2.top());}System.out.println("Queue--------------------------------------------------");return null;}}

这篇关于剑指offer面试题7——用两个栈实现队列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988907

相关文章

Android基础-AIDL的实现

一、引言 在Android开发中,跨进程通信(IPC,Inter-Process Communication)是一个常见的需求。为了支持这种需求,Android提供了多种IPC机制,其中AIDL(Android Interface Definition Language)就是其中一种重要的方式。AIDL允许开发者定义跨进程通信的接口,从而在不同的进程间进行方法调用和数据交换。本文将详述AIDL的

泛微开发修炼之旅--13通过Ecology拦截器(注解的方式),拦截后端接口,实现接口执行成功后或执行前操作源码示例

文章链接:泛微开发修炼之旅--13通过Ecology拦截器(注解的方式),拦截后端接口,实现接口执行成功后或执行前操作源码示例

如何在隔离环境中设置 LocalAI 以实现 GPU 驱动的文本嵌入

作者:来自 Elastic Valeriy Khakhutskyy 你是否想在 Elasticsearch 向量数据库之上构建 RAG 应用程序?你是否需要对大量数据使用语义搜索?你是否需要在隔离环境中本地运行?本文将向你展示如何操作。 Elasticsearch 提供了多种方法来为你的数据创建嵌入以进行对称搜索。最流行的方法之一是将 Elasticsearch open inferenc

赶紧收藏!2024 年最常见 20道分布式、微服务面试题(五)

上一篇地址:赶紧收藏!2024 年最常见 20道分布式、微服务面试题(四)-CSDN博客 九、在分布式系统中,如何保证数据一致性? 在分布式系统中保证数据一致性是一个复杂的问题,因为分布式系统由多个独立的节点组成,这些节点可能分布在不同的地理位置,通过网络进行通信。以下是一些常见的策略和技术,用于在分布式系统中确保数据一致性: 强一致性模型: 强一致性要求系统在任何时候都能保证所有节点上的

整理好了!2024年最常见 20 道分布式、微服务面试题(六)

上一篇地址:整理好了!2024年最常见 20 道分布式、微服务面试题(五)-CSDN博客 十一、什么是服务网格(如Istio或Linkerd)? 服务网格(Service Mesh)是一种微服务架构中的基础设施层,它提供了一种将服务间通信和安全控制逻辑与业务逻辑分离的方法。服务网格使得开发者可以专注于编写业务逻辑,而将服务之间的通信、安全、监控和可观测性等任务交给专门的代理来处理。这种代理通常

【经典算法】LeetCode 222. 完全二叉树的节点个数(Java/C/Python3实现含注释说明,Easy)

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论,💬支持博主,记得点个大大的关注,持续更新🤞 ————————————————- 题目描述 给定一个完全二叉树,计算树的节点个数。完全二叉树的定义如下

手写kNN算法的实现-用余弦相似度来度量距离

设a为预测点,b为其中一个样本点,在向量空间里,它们的形成的夹角为θ,那么θ越小(cosθ的值越接近1),就说明a点越接近b点。所以我们可以通过考察余弦相似度来预测a点的类型。 from collections import Counterimport numpy as npclass MyKnn:def __init__(self,neighbors):self.k = neighb

从零开始利用树莓派+扬声器,实现简单的蓝牙音箱,手机连接放歌

背景 树莓派4B自带蓝牙和Wifi, 无需外接 USB dongle; 蓝牙最常见的应用是近距离传输数据,比如蓝牙传文件,蓝牙音箱等。正好家里有个普通的usb供电的便携音箱; 本文用树莓派蓝牙+普通音箱,实现简单的蓝牙音箱。 大致分为三个部分: kernel/driver层的ALSA驱动框架蓝牙音频协议栈:A2DP, 这是使蓝牙具有传输音频流能力的基石; Linux官方的bluez包实现了

Vue数据动态代理机制的实现

Object.defineProperty() (1)这个方法是ES5新增的 (2)这个方法的作用是:给对象新增属性,或者设置对象原有的属性 (3)用法:Object.defineProperty(给哪个对象新增属性,‘新增的属性名是什么’,{给新增的属性设置相关的配置项key:value对}) 补充:配置项有哪些? ①value配置项:给属性指定值 ②writable配置项:设置该属性的值是否

【C++】——Stack与Queue(含优先队列(详细解读)

前言 之前数据结构中是栈和队列,我们分别用的顺序表和链表去实现的,但是对于这里的栈和队列来说,他们是一种容器,更准确来说是一种容器适配器 ✨什么是容器适配器?  从他们的模板参数可以看出,第二个参数模板是一个容器,并不像vector和list一样是一个内存池 至于deque后面会介绍 这里写传容器的原因就是,栈和队列是直接复用了其他的容器,用他们的功能实现自己的功能,就比如每家