当前位置: 首页 > article >正文

力扣--LCR 148.验证图书取出顺序

题目

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

给定一个表示图书放入顺序的整数序列 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 的排列。

代码

class Solution {
public boolean validateBookSequences(int[] putIn, int[] takeOut) {
if(putIn == null || putIn.length <= 0){
return true;
}
int k = 0;
Stack stack = new Stack();
for(int i = 0; i < putIn.length; i++){
stack.push(putIn[i]);
while(!stack.isEmpty() && stack.peek() == takeOut[k]){
stack.pop();
k++;
}
}
return stack.isEmpty();
}
}
时间复杂度 O(N) : 其中 N 为列表 putIn 的长度;每个元素最多入栈与出栈一次,即最多共 2N 次出入栈操作。
空间复杂度 O(N) : 辅助栈 stack 最多同时存储 N 个元素。


http://www.kler.cn/a/414974.html

相关文章:

  • c++设计模式模块与系统
  • Http 转 https 中 Nginx 的详细配置过程
  • gitlab自动打包python项目
  • 智慧防汛平台在城市生命线安全建设中的应用
  • 【H2O2|全栈】Node.js(2)
  • 屏幕分辨率|尺寸|颜色深度指纹修改
  • 二维码有哪些网络安全风险隐患?
  • 【C语言篇】探索 C 语言结构体:从基础语法到数据组织的初体验
  • 力扣,88. 合并两个有序数组
  • [2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(1))
  • 项目整合logback日志打印线程id
  • GraphRAG访问模式和知识图谱建模
  • HarmonyOS-初级(一)
  • 【ANC系统】主动噪声控制系统结构分类
  • 前端——自定义组件
  • ubuntu防火墙入门(一)——设置服务、关闭端口
  • 重塑视频新语言,让每一帧都焕发新生——Video-Retalking,开启数字人沉浸式交流新纪元!
  • elasticsearch的索引模版使用方法
  • C#中面试的常见问题002
  • 将WPS的PPT 无损的用微软的PowerPoint打开
  • 基于Linux的repmgr搭建
  • golang 实现比特币内核:transaction 结构中输入和输出两部分的一些说明
  • iOS 系统中使用 webView 打印 html 的打印边距问题
  • 【C51】单片机与LED数码管的动态显示接口案例分析
  • ctfshow -web -118-124
  • node + Redis + svg-captcha 实现验证码