【栈与队列part01】| 232.用栈实现队列、225.用队列实现栈

news2024/11/24 14:57:01

目录

✿LeetCode232.用栈实现队列❀

✿LeetCode225. 用队列实现栈❀ 

✿LeetCode232.用栈实现队列❀

链接:232.用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

说明:

  • 你 只能 使用标准的栈操作 —— 也就是只有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

 

本题其实不难,主要是pop()操作,要判断一下出栈是否为空,如果为空吧入栈的元素全加入到出栈,然后返回pop(),代码如下: 

class MyQueue {
    Stack<Integer> in=new Stack<>();
    Stack<Integer> out=new Stack<>();

    public MyQueue() {

    }
    
    public void push(int x) {
        in.push(x);
    }
    
    public int pop() {
        inToOut();
        return out.pop();
    }
    
    public int peek() {
       inToOut();
        return out.peek();
    }
    
    public boolean empty() {
        return in.isEmpty() && out.isEmpty();
    }
    public void inToOut(){
        if(out.isEmpty()){
            while(!in.isEmpty()){
                out.push(in.pop());
            }
        }
    }
}

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */

✿LeetCode225. 用队列实现栈❀ 

链接:225.用队列实现栈

请你仅使用两个队列实现一个后入先出(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(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

 

题目虽然要求的是两个队列实现栈,但是一个队列也可以实现栈,让每一个入队列的元素再次入到队列尾部,完成一下逆序,这样就实现了栈,代码如下: 

class MyStack {
    // 一个队列实现栈
    Queue<Integer> queue=new LinkedList<>();
    public MyStack() {

    }
    
    public void push(int x) {
        queue.add(x);
        for(int i=0;i<queue.size()-1;i++){
            queue.add(queue.poll());
        }   
    }
    
    public int pop() {
        return queue.poll();
    }
    
    public int top() {
        return queue.peek();
    }
    
    public boolean empty() {
        return queue.isEmpty();
    }
}

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack obj = new MyStack();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.top();
 * boolean param_4 = obj.empty();
 */

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

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

相关文章

为什么要使用卷积

1. 卷积这个名词是怎么解释&#xff1f;“卷”是什么意思&#xff1f;“积”又是什么意思&#xff1f; 卷积的“卷”&#xff0c;指的的函数的翻转&#xff0c;从 g(t) 变成 g(-t) 的这个过程&#xff1b;同时&#xff0c;“卷”还有滑动的意味在里面&#xff08;吸取了网友李…

【Vue全家桶高仿小米商城】——(一)Node环境配置

文章目录 第一章&#xff1a;课程简介一、Win/Mac Node环境安装二、Linux Node环境安装三、安装淘宝镜像四、安装vue/vue-cli/webpack/webpack-cli五、Node版本如何做卸载和升级&#xff08;Mac/Linux&#xff09; 第一章&#xff1a;课程简介 对课程的整体内容做介绍&#xf…

系统编程(4):进程间通信

文章目录 管道通信无名管道有名管道 管道通信 无名管道 无名管道只能在有亲缘关系之间的进程间通信&#xff08;比如父子进程&#xff09;。 第一步是创建一个管道&#xff0c;这个管道有两个文件描述符一个读&#xff0c;一个写 - 两个文件描述符fd[2]&#xff0c;一个文件…

智慧城市同城V4小程序V2.27独立开源版 + 小程序+全插件+VUE小程序开源前端 安装测试教程

智慧城市同城V4小程序V2.27开源独立版本月最新版&#xff0c;与上一版相比修复了一些小细节&#xff0c;功能本身并无大的变化。体验下来感觉唯一区别用户授权一键就登陆了&#xff0c;上两版都需要选择头像呢称。新版系统包含全插件、包括很多稀缺收费的插件都在里面如括招聘、…

操作系统|知识梳理|复习(下)

目录 &#x1f4da;文件与外存空间 &#x1f407;文件的概念 &#x1f407;文件系统的概念 &#x1f407;文件的组织——路径与目录 &#x1f407;文件的存储⭐️ &#x1f955;连续分配法 &#x1f955;链接分配法 &#x1f955;扩展分配法 &#x1f955;链表备份法 …

chatgpt赋能python:Python生成指定位数SEO文章的方法

Python生成指定位数SEO文章的方法 在网站优化中&#xff0c;SEO是一项非常重要的工作&#xff0c;它能够帮助我们提高网站的排名&#xff0c;并吸引更多的流量。在进行SEO优化时&#xff0c;我们需要开发一些有关关键词的文章。本文将介绍如何使用Python生成指定位数的SEO文章…

【前端基础篇】盒子模型、边距、边框、外边距合并问题详解

文章目录 一、盒模型概念与组成1.1 生活举例1.2 概念 二、盒模型组成分析2.1 **内容区&#xff08;content&#xff09;**2.2 内填充&#xff08;padding&#xff09;2.3 **边框&#xff08;border&#xff09;**2.5 外边距&#xff08;margin&#xff09;2.6 外边距合并问题2.…

【Django 网页Web开发】06. 模板继承的主题导航栏案例 高效开发 便捷维护(保姆级图文)

目录 实现效果模板继承moban.html 模板页面子页面test1.htmltest2.html url.pyview.py常见格式总结 欢迎关注 『Django 网页Web开发』 系列&#xff0c;持续更新中 欢迎关注 『Django 网页Web开发』 系列&#xff0c;持续更新中 实现效果 很多页面都有导航栏&#xff0c;以CSD…

CAD绘制等分点(定距、定数)

练习用CAD绘制等分点 分成两种&#xff0c;分别为定距分点和定数分点 前者指按照一定的距离在给出的线上绘制等分点 后者将已知的线分为确定的份数&#xff0c;绘制等分点 这里用绘制燃气灶的燃气孔为例&#xff1a; 首先绘制两个长方形作为基础 生成中心线作为参考 使用时…

视频网页前端禁止截屏代码实现js

有言在先 原理是采用商业级DRM实现&#xff0c;DRM 许可证费用目前没有免费服务商&#xff0c;腾讯云价格是0.0056元/次。 另外此功能不兼容安卓&#xff0c;安卓系统无法正常播放视频&#xff01; 先展示效果 可以看到截屏时刻出现黑屏&#xff0c;录屏也能保证全黑状态。…

独立站的Facebook运营策略探索

Facebook广告是独立站吸引流量和推广业务的重要工具。然而&#xff0c;如何有效地运用Facebook广告&#xff0c;提高曝光率、点击率和转化率&#xff0c;是每个独立站主的关注焦点。本文将探索独立站如何巧妙地运用Facebook广告&#xff0c;实现精准引流和业务增长。 第一&…

性能优化-内存优化

8-《内存优化》 一.基础知识1.Java的内存分配区域2.Java的引用类型3.Java的垃圾回收机制&#xff1a;三个问题4.Android的内存管理机制 二. Android的内存泄漏、内存溢出、内存抖动概念1.**内存泄露**2.**内存抖动**3.常见的内存泄漏现象 三. 工具1.Profiler2.MAT3. Leak Canar…

高效工作了

高效工作 目录概述需求&#xff1a; 设计思路实现思路分析1.安排计划 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive.…

STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4

STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 Proteus仿真小实验&#xff1a; STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 功能&#xff1a; 硬件组成&#xff1a;STC15W4K32S4单片机 LCD12864显示器4x4矩阵键盘HX711电子秤 1.单片机通…

人工智能领域:面试常见问题超全(深度学习基础、卷积模型、对抗神经网络、预训练模型、计算机视觉、自然语言处理、推荐系统、模型压缩、强化学习、元学习)

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

QTYX量化系统实战案例分享|以小搏大选股策略一天三涨停-202306第四弹

前言 “实战案例分享系列”是和大家分享一些股票量化分析工具QTYX在实战中的应用案例&#xff08;包括失败的案例&#xff09;&#xff0c;这样能够帮助大家更好地去理解QTYX中的功能设计&#xff0c;也能更好地帮助大家搭建出属于自己的量化交易系统。 关于QTYX的使用攻略可以…

想成为“专精特新”企业?可以从这4个方面入手...

一直以来我国高度重视培育壮大中小企业&#xff0c;“专精特新企业”是近年来政府各层面都在大力扶持的重点企业类型。大批中小企业积极将“数字化”“智能化”融入生产、管理、营销、供应链协作等各个方面&#xff0c;运用新技术、新手段&#xff0c;有效提高运营效率&#xf…

Shader Graph21-UV投影cubemap

准备 https://download.csdn.net/download/zhuziying99/87900710 需要先生成dds文件&#xff0c;可以使用两个工具如果是N卡的显卡&#xff0c;可以使用 Texture Tools Exporter | NVIDIA Developer 如果是A卡的显卡&#xff0c;可以使用CubeMapGen 一、打开Unreal&#x…

Vue中如何进行数据可视化大屏展示

Vue中如何进行数据可视化大屏展示 在现代数据驱动的应用程序中&#xff0c;数据可视化大屏已经成为了非常重要的一环。通过对海量数据进行可视化展示&#xff0c;可以帮助用户更好地理解和分析数据&#xff0c;从而做出更加明智的决策。在Vue中进行数据可视化大屏展示也变得越…

SpringBoot+Vue+Java 的高校招生管理系统

文章目录 源码下载地址简介系统设计思路1 数据库设计2 系统整体设计2.1 系统设计思想2.2系统流程图 系统详细设计1系统功能模块2. 管理员功能模块3学生功能模块 源码下载地址 源码下载地址 源码下载地址https://download.csdn.net/download/JasonXu94/87870946 简介 本次设计…