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

​力扣解法汇总946-验证栈序列

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。

示例 1:

输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
输出:true
解释:我们可以按以下顺序执行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
示例 2:

输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
输出:false
解释:1 不能在 2 之前弹出。
 

提示:

1 <= pushed.length <= 1000
0 <= pushed[i] <= 1000
pushed 的所有元素 互不相同
popped.length == pushed.length
popped 是 pushed 的一个排列

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/validate-stack-sequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

* 解题思路:
* 利用栈来的功能来实现,遍历pushed,如果和popped中index位不同,则pushed中元素value加入stack栈。
* 如果相同,则index++,并且从上开始遍历stack,如果stack中头和index位置值相等,则index++。
* 最终判断index和pushed.length长度是否相等即可。
 

代码:

public class Solution946 {

    public boolean validateStackSequences(int[] pushed, int[] popped) {
        Stack<Integer> stack = new Stack<>();
        int index = 0;
        for (int i = 0; i < pushed.length; i++) {
            int value = pushed[i];
            if (value != popped[index]) {
                stack.add(value);
                continue;
            }
            index++;
            while (stack.size() > 0 && stack.peek() == popped[index]) {
                index++;
                stack.pop();
            }
        }
        return index == popped.length;
    }
}

相关文章:

  • PMP每日一练 | 考试不迷路-8.31(包含敏捷+多选)
  • 【Java第24期】:IO、存储、硬盘和文件系统的相关知识
  • ZLMediaKit学习(一):Window环境下推拉流
  • voip|网络电话,软件实现电信座机
  • 天玑810和天玑800u哪个好 天玑810和天玑800u差多少
  • Sulfo-Cy3 NHS酯,Sulfo-Cy3 NHS ester,水溶性荧光染料Cy3标记琥珀酰亚胺活化酯
  • Python输入漏洞利用(Python input漏洞)
  • 重启tomcat-Tomcat服务器怎么重启?
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • SQL(及存储过程)跑得太慢怎么办?
  • 如何选择国际通知短信服务商?
  • RocketMQ回顾整理
  • 【大数据分析】FordFulkerson算法(JAVA实现)
  • Linux ARM平台开发系列讲解(GMSL摄像头篇)1.2 MAX9296 GMSL链路配置
  • 小波神经网络的基本原理,小波神经网络算法原理
  • [数据结构]链表的实现在PHP中
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • bearychat的java client
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • JavaScript函数式编程(一)
  • LeetCode算法系列_0891_子序列宽度之和
  • mongo索引构建
  • October CMS - 快速入门 9 Images And Galleries
  • vue 配置sass、scss全局变量
  • Vue--数据传输
  • 回顾 Swift 多平台移植进度 #2
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端代码风格自动化系列(二)之Commitlint
  • 全栈开发——Linux
  • 如何在GitHub上创建个人博客
  • 深入浏览器事件循环的本质
  • 微信小程序开发问题汇总
  • 问题之ssh中Host key verification failed的解决
  • 我的业余项目总结
  • 源码安装memcached和php memcache扩展
  • hi-nginx-1.3.4编译安装
  • 正则表达式-基础知识Review
  • (1)常见O(n^2)排序算法解析
  • (poj1.2.1)1970(筛选法模拟)
  • (待修改)PyG安装步骤
  • (二)springcloud实战之config配置中心
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (转)nsfocus-绿盟科技笔试题目
  • (转)项目管理杂谈-我所期望的新人
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET的数据绑定
  • .so文件(linux系统)
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [BSGS算法]纯水斐波那契数列
  • [BZOJ3757] 苹果树
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C/C++] C/C++中数字与字符串之间的转换