代码随想录算法训练营Day7 | 233.用栈实现队列、225.用队列实现栈

LeeCode 233 用栈实现队列

在这里插入图片描述

本题思路:使用两个栈来实现队列,应该怎么做呢?我们通过画图来分析下

  • 入队列的时候,直接在 stackin 入在这里插入图片描述
  • 出队列的时候,肯定是先出 1 ,此时把,stackin 中全部 弹出到 入到 stackout 中,如果要出队列,直接弹出 stackout 顶部元素就行。(此处,因为 stackout 为空,所以需要将 stackin 所有元素弹入到 stackout 中在这里插入图片描述
  • 此时如果继续入队列 3 就继续往 stackin 中添加在这里插入图片描述
  • 此时再要出队列的时候,就是出的2,此时 stackout 中不为空,直接返回 stackout.pop 即可在这里插入图片描述
  • 此时再进入队列 4 ,直接进入 stackin在这里插入图片描述
  • 后续的逻辑就和前面一样
public class MyQueue {
    Stack<Integer> stackin;
    Stack<Integer> stackout;

    public MyQueue() {
        stackin = new Stack<>();
        stackout = new Stack<>();
    }

    // 进队列
    public void push(int x) {
        stackin.push(x);
    }

    // 出队列
    public int pop() {
        // 首先判断 stackout 是否为空
        if (stackout.isEmpty()) {
            // 把 stackin 元素全部放入 stackout中
            while (!stackin.isEmpty()) {
                stackout.push(stackin.pop());
            }
        } 
        return stackout.pop();
    }

    // 查看队首元素
    public int peek() {
        // 首先判断 stackout 是否为空
        if (stackout.isEmpty()) {
            // 把 stackin 元素全部放入 stackout中
            while (!stackin.isEmpty()) {
                stackout.push(stackin.pop());
            }
        } 
        return stackout.peek();
    }

    // 判空操作
    public boolean empty() {
        return (stackin.isEmpty() && stackout.isEmpty()) == true ? true : false;
    }
}

LeetCode 225 用队列实现栈

在这里插入图片描述
本题思路:使用 一个队列来模拟实现栈更简单。下面画个图来分析一下

  • 进栈操作在这里插入图片描述
  • 出栈操作,此时应该出的是 3 ,我们可以将 3 之前的元素 从队头弹出,然后重新加入到队列中,此时队头元素就是 3,直接弹出返回这个元素即可在这里插入图片描述
public class MyStack {

    Queue<Integer> queue;
    int size = 0;

    public MyStack() {
        queue = new ArrayDeque<>();
    }

    // 添加操作,直接入栈即可(入队列)
    public void push(int x) {
        queue.add(x);
        size++;
    }

    // 出栈操作
    public int pop() {
        // 先弹出 size-1 个元素,重新加到队列末尾。
        for (int i = 0; i < size - 1; i++) {
            queue.add(queue.poll());
        }
        size--;
        return queue.poll();
    }

    // 查看栈顶元素
    public int top() {
        // 先弹出 size-1 个元素,重新加入到队列末尾。
        for (int i = 0; i < size - 1; i++) {
            queue.add(queue.poll());
        }
        // 保存下来栈顶元素
        int res = queue.poll();
        queue.add(res);
        return res;
    }

    public boolean empty() {
        return size == 0 ? true : false;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DBeaver连接hive

1.新建hive连接 其中主机填写hive所在节点地址&#xff0c;端口10000为默认&#xff0c;数据库名不填则是默认default数据库&#xff0c;用户名密码填写hadoop集群中能操作hdfs的用户和密码。 2.编辑驱动&#xff0c;驱动的jar包从安装的hive下的jdbc路径下获取&#xff0c;例…

【HarmonyOS开发】ArkTs使用Http封装

1、鸿蒙中如何进行网络请求 1.1 三方库请求 ohos/axios ohos/retrofit ohos/httpclient 1.2 鸿蒙原生请求 ohos.net.http 2、ArkTs请求模块ohos.net.http 本模块提供HTTP数据请求能力。应用可以通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD…

【电源专题】Buck电源上电震荡谁的错?

在文章:【电源专题】案例:Buck芯片上电瞬间波形震荡?从别的人案例中来学习软启参数中我们通过别人的文章了解到了Buck芯片上电瞬间波形震荡有几个方法可以解决,但主要还是围绕着软启动参数去学习。因为文章中无法知道编者所用的电源芯片和电路,所以无法进行分析。 最近我…

《每天一分钟学习C语言·七》指针、字节对齐等

1、 对于二维数组如a[3][4]可以当做有三个元素的一维数组&#xff0c;每个元素包含四个小元素。 2、 printf(“%-5d”, i); //负号表示左对齐&#xff0c;5d表示空五个光标的位置 3、 栈&#xff1a;先进后出&#xff0c;堆&#xff1a;先进先出 4、 &#xff08;1&#xff…

零代码助力服装行业数字化转型

内容来自演讲&#xff1a;涂岳俊 | 广州市衣湛国际信息科技有限公司 | CEO 摘要 这篇文章讨论了为什么选择明道云零代码平台&#xff0c;以及它如何帮助服装企业解决各种问题。作者分享了自己的经验&#xff0c;并列举了一些成功的案例来证明零代码平台的优势。文章还提到了在…

分布式锁概述

一、概念 1、什么是分布式锁 我们知道传统进程内的多线程之间可以利用锁机制来实现它的同步&#xff0c;同时进程之间也可以互相通信&#xff0c;那我我们如果使用分布式服务的话&#xff0c;有应该怎么实现集群内多服务之间访问公共资源&#xff0c;并且确保它们不会出现问题…

RobotMaster学习——工序导入,参数设置,轨迹生成

目录 引出1.导入工序2.修改刀具其他刀具参数 3.进行工序分配4.设置TCP5.设置工作站6.工序整体导入配置7.进行计算 总结 引出 RobotMaster的操作流程&#xff0c;从导入工序到生产轨迹。 1.导入工序 2.修改刀具 要选择第七把刀具 其他刀具参数 第一把刀具 第二把刀具 第三把刀…

自制数据库空洞率清理工具-C版-01-EasyClean-V1.0(支持南大通用数据库Gbase8a)

目录 一、环境信息 二、简述 三、支持功能 四、空洞率 五、工具流程图 六、安装包下载地址 七、参数介绍 1、命令模板 2、命令样例 3、参数表格 八、安装步骤 1、配置环境变量 2、生效环境变量 3、检验动态链接是否正常 九、运行效果 一、环境信息 名称值CPUInt…

MySQL——内置函数

目录 一.日期函数 1.current_date() 2.current_time() 3.current_stamp() 4.date_add() 5.date_sub() 6.datediff 7.date 8.now 二.字符串函数 1.charset() 2.concat() 3.length() 4.replace 5.substring(str,postion,length) 6.instr&#xff08;string,substr…

基于ssm+jsp二手车估值与销售网络平台源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;二手车估值与销售网络平台也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#…

ansible-playbook的Temlates模块 tags模块 Roles模块

Temlates模块 jinja模板架构&#xff0c;通过模板可以实现向模板文件传参(python转义)把占位符参数传到配置文件中去,生产一个目标文本文件&#xff0c;传递变量到需要的配置文件当中 &#xff08;web开发&#xff09; nginx.conf.j2 早文件当中配置的是占位符&#xff08;声明…

vivado 自动派生时钟

自动派生时钟 自动派生的时钟也称为自动生成的时钟。Vivado IDE自动在时钟修改块&#xff08;CMB&#xff09;的输出引脚上创建这些的约束&#xff0c;只要已经定义了相关的主时钟。在AMD 7系列设备系列中&#xff0c;CMB有&#xff1a; •MMCM*/PLL* •BUFR •相位器* 在…

Spring源码分析 @Autowired 是怎样完成注入的?究竟是byType还是byName亦两者皆有

1. 五种不同场景下 Autowired 的使用 第一种情况 上下文中只有一个同类型的bean 配置类 package org.example.bean;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FruitCo…

过度加大SSD内部并发何尝不是一种伤害-part2

方案设计完了&#xff0c;如何验证效果如何呢&#xff1f;作者是这么做的。 第一步&#xff0c;选择模拟环境&#xff1a;PLAN方案在定制的FEMU&#xff08;Flash Emulation Module&#xff09;上实现&#xff0c;该模块支持TRIM和多流功能&#xff0c;具体参数如下&#xff1…

modbus_tcp的实现 through python.

0.引言 当前科技似乎处于加速发展期&#xff0c;各个模块都在快速迭代&#xff0c;迭代的速度会让既有的一些经验产生问题&#xff0c;在用python实现modbus_tcp协议时&#xff0c;网上流传的一些代码中import语句会出现问题。导致pymodbus模块用起来很不好用。 这个原因出在…

基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

react当中生命周期(旧生命周期详解)

新生命周期https://blog.csdn.net/kkkys_kkk/article/details/135156102?spm1001.2014.3001.5501 目录 什么是生命周期 react中的生命周期 旧生命周期 生命周期图示 常用的生命周期钩子函数 初始化阶段 挂载阶段 在严格模式下挂载阶段的生命周期函数会执行两次原因 更…

W25Q128

什么是 W25Q128 &#xff1f; W25Q128是一款由Winbond&#xff08;威邦电子&#xff09;公司生产的闪存存储器芯片&#xff0c;属于串行闪存系列。具体来说&#xff0c;W25Q128是一颗128Mb&#xff08;兆位&#xff09;容量的串行闪存芯片&#xff0c;其中"W"代表Wi…

Python匹配文件模块的实战技巧

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;文件匹配是许多应用中常见的需求&#xff0c;例如文件管理、数据处理等。本文将深入探讨Python中用于文件匹配的模块&#xff0c;包括glob、fnmatch和os.path等&#xff0c;通过丰富的示例…

第11章 GUI Page403~405 步骤三 设置滚动范围

运行效果&#xff1a; 源代码&#xff1a; /**************************************************************** Name: wxMyPainterApp.h* Purpose: Defines Application Class* Author: yanzhenxi (3065598272qq.com)* Created: 2023-12-21* Copyright: yanzhen…