LeetCode算法栈—验证图书取出顺序

news2024/11/15 21:57:40

验证图书取出顺序

目录

验证图书取出顺序

题解:

代码:

运行结果:


验证图书取出顺序

现在图书馆有一堆图书需要放入书架,并且图书馆的书架是一种特殊的数据结构,只能按照 一定 的顺序 放入 和 拿取 书籍。

给定一个表示图书放入顺序的整数序列 putIn,请判断序列 takeOut 是否为按照正确的顺序拿取书籍的操作序列。你可以假设放入书架的所有书籍编号都不相同。

示例 1:

输入:putIn = [6,7,8,9,10,11], takeOut = [9,11,10,8,7,6]
输出:true
解释:我们可以按以下操作放入并拿取书籍:
push(6), push(7), push(8), push(9), pop() -> 9,
push(10), push(11),pop() -> 11,pop() -> 10, pop() -> 8, pop() -> 7, pop() -> 6

示例 2:

输入:putIn = [6,7,8,9,10,11], takeOut = [11,9,8,10,6,7]
输出:false
解释:6 不能在 7 之前取出。

提示:

  • 0 <= putIn.length == takeOut.length <= 1000
  • 0 <= putIn[i], takeOut < 1000
  • putIn 是 takeOut 的排列。

题解:

  • 首先,创建一个 Stack 对象 stack,用于模拟存储书籍的入栈顺序。
  • 然后,使用一个整型变量 i=0 来标识 takeOut 数组的下标
  • 接下来,通过遍历 putIn 数组中的每个元素 num,将其入栈 stack.push(num)
  • 然后,使用一个循环判断栈顶元素和当前 takeOut 数组的元素 takeOut[i] 是否相等如果相等,则说明可以从栈中取出对应的书籍,并且 i 增加一位,继续判断下一个 takeOut 元素与栈顶元素是否相等。直到栈为空或者栈顶元素与当前 takeOut 元素不相等,跳出循环
  • 最后,返回 stack.isEmpty() 的结果,如果栈为空则表示所有书籍都被正确地取出,返回 true,否则返回 false 表示取出顺序不合法。

代码:

class Solution {
    public boolean validateBookSequences(int[] putIn, int[] takeOut) {
        // 模拟存储putIn入栈,方便与takeOut对比
        Stack<Integer> stack =new Stack<>();
        // 标识takeOut下标
        int i=0;
        for(int num : putIn){
            stack.push(num);
            // 循环判断栈顶元素是否为takeOut当前元素
            while(!stack.isEmpty()&&stack.peek()==takeOut[i]){
                stack.pop();
                i++;
            }
        }
        return stack.isEmpty();
    }
}

运行结果:

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

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

相关文章

MIKE水动力笔记17_MIKE文件转shp、统计每个单元格的面积

本文目录 前言Step 1 MIKE文件转shpStep 2 在ArcGIS中打开shp统计相应指标 前言 MIKE的工具箱中自带一个转shp的工具&#xff0c;然后可以拖进ArcGIS中很方便的统计每个单元格的面积和每个网格点的水深。 Step 1 MIKE文件转shp MIKE允许转shp的文件类型包括dfs2文件、dfsu文…

EDU实战-SQL注入漏洞

对于edu来说&#xff0c;是新人挖洞较好的平台&#xff0c;本次记录一次走运的捡漏0x01 前景 在进行fofa盲打站点的时候&#xff0c;来到了一个后台管理处看到集市二字&#xff0c;应该是edu站点 确认目标身份&#xff08;使用的quake进行然后去ipc备案查询&#xff09; 网…

Redis 之 SessionCallback RedisCallback 使用

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

前端 vue 实现区域地图-并在地图上标注柱状图

效果图 西藏的区域规划以及柱状图 一、下载区域地图的js文件 区域地图可以在中国的区域地图 这里下载 二、实现代码 一个普通的html可以参考 实现广东省的区域地图并标注柱状图 三、vue里具体实现代码 1.做一个有具体宽高的dom <template><div class"box&…

小程序之自定义组件 结合案例(会议OA的会议/投票管理及个人中心的搭建)详解 (4)

⭐⭐ 小程序专栏&#xff1a;小程序开发专栏 ⭐⭐ 个人主页&#xff1a;个人主页 目录 一.前言 二.小程序自定义组件及其使用 2.1 自定义组件的使用 三.使用自定义组件完成会议功能界面的实现 3.1 导航栏的实现 3.2 会议界面内容的实现 四.投票管理界面 五.个人中心 今天…

SystemVerilog Assertions应用指南 Chapter1.30 使用“ intersect”控制序列的长度

在123节讨论的“ intersec”运算符可以有效地控制序列的长度,尤其是在时序窗口未定义上界的情况。每当使用可能性( eventuality)运算符时,检验器成功所需的时钟周期数没有限制。运算符 intersect提供了一个定义可能性运算符可以使用的最小和最大时钟周期数的机制。 属性…

计算机丢失MSVCP140.dll的解决方法分享

MSVCP140.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2015 Redistributable的一部分。这个文件包含了许多用于运行C程序的函数和类库。当计算机丢失这个文件时&#xff0c;可能会导致某些软件或游戏无法正常运行。 那么&#xff0c;为什么计算机会丢失MSVCP14…

Flex and Bison 阅读与学习笔记

本文的内容来源于本人阅读 flex & bison的笔记和项目工程学习中遇到的问题。如果你能从中获得一丝丝帮助&#xff0c;本人将不胜荣幸。 文章目录 Ⅰ、目录与批注前四章 引言和使用介绍flex 规范参考bison 参考规范其余内容 Ⅱ、相关练习代码学习历程代码实例 参考文献 Ⅰ、…

【文章摘要-20231019】Any-to-Any Generation via Composable Diffusion

论文链接 代码链接 作者提出了一个可组合的扩散模型&#xff0c;该模型体现为能够处理任何输入模态的组合&#xff0c;进而输出任何模态组合的新型生成模型&#xff0c;如语言、图像、视频或音频。不同于已经存在的生成式人工智能系统&#xff0c;该算法能够并行生成多个模态并…

Java基础 :内部类、枚举、泛型

内部类 概念 是类中的五大成分之一&#xff08;成员变量、方法、构造器、内部类、代码块&#xff09;&#xff0c;如果一个类定义在另一个类的内部&#xff0c;这个类就是内部类。 场景 当一个类的内部&#xff0c;包含了一个完整的事物&#xff0c;且这个事物没有必要单独…

工作之余Happy一下(实现时钟特效)

样式 测试代码&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>时钟特效</title><style> body{background: #000;}.content{width: 400px;margin: auto;color: #fff;}#title…

openGauss学习笔记-104 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书替换

文章目录 openGauss学习笔记-104 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书替换104.1 操作场景104.2 前提条件104.3 注意事项104.4 操作步骤 openGauss学习笔记-104 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书替换 openGaus…

工业企业网络推广解决方案 | 网络营销专家分享 | 上海添力

在国内&#xff0c;工业企业如果想在线上做推广&#xff0c;其主要途径就是做搜索引擎推广&#xff0c;在几个常用的搜索引擎&#xff08;百度、360、搜狗、必应&#xff09;中&#xff0c;一般都是从百度开始做起。但不少工厂做百度广告&#xff0c;钱花了不少&#xff0c;就是…

做PPT或制作表情包时,不会把视频转成gif动图?5分钟学会

一、背景 当我们在做PPT时&#xff0c;不可避免的需要放一些视频&#xff0c;但视频占用空间太大&#xff0c;而且比较烦的是需要点一下才能播放。因此需要将视频转成gif动态&#xff0c;以自动播放。 GIF的全称是Graphics Interchange Format&#xff0c;可译为图形交换格式…

SQL题目记录

1.商品推荐题目 1.思路&#xff1a; 通过取差集 得出要推荐的商品差集的选取&#xff1a;except直接取差集 或者a left join b on where b null 2.知识点 1.except selectfriendship_info.user1_id as user_id,sku_id fromfriendship_infojoin favor_info on friendship_in…

ATE测试工程师的前景待遇如何?薪资天花板有多高?

在芯片行业&#xff0c;ATE测试工程师扮演着至关重要的角色。 他们不仅需要理解电路和芯片内部的工作原理&#xff0c;还需要利用各种测试工具和方法对芯片进行精确的测试和分析。那么ATE测试工程师前景如何&#xff1f;需要具备哪些技能要求呢&#xff1f; 首先来了解什么是…

【数据库范式】实际案例分析

前言 在日常业务研发过程中&#xff0c;我们常常需要与数据库表打交道。设计范式是数据表设计的基本原则&#xff0c;对于数据表的设计范式&#xff0c;我们特别容易忽略它的存在。很多时候&#xff0c;当数据库运行了一段时间之后&#xff0c;我们才发现数据表设计上有问题。然…

2023年中国润滑油分散剂市场需求量及行业竞争现状分析[图]

润滑油分散剂是一种两亲性化学品&#xff0c;可以增加油性部分以及水性部分在同一体系中的相容性&#xff0c;能降低分散体系中固体或液体粒子聚集的物质。换油时&#xff0c;可将有害的悬浮物从油中清除。 国内从60年代末开始试制丁二酰亚胺型分散剂&#xff0c;并于80年代初在…

93. 递归实现组合型枚举

题目&#xff1a; 93. 递归实现组合型枚举 - AcWing题库 思路&#xff1a; 1.从n个数中选择m个数&#xff0c;问有多少种选法。---->抽象为有m个坑位&#xff08;设置kenway[N]表示&#xff09;&#xff0c;其中填入编号为1~n的萝卜&#xff0c;问有几种填法。这里我们可…

二叉树题目:从中序与后序遍历序列构造二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;从中序与后序遍历序列构造二叉树 出处&#xff1a;106. 从中序与后序遍历序列构造二叉树 难度 5 级 题目描述 要…