LeetCode 946: Validate Stack Sequences (栈好题)

模型训练篇 | 手把手教你使用ResNet训练自己数据集和推理,ResNet50通用物体分类识别,含完整代码和数据集,全网最详细教程 手把手教你使用ResNet训练自己数据集和推理,ResNet50通用物体分类识别,含完整代码和数据集,全网最详细教程。本篇文章将带你学习 ResNet50 模型构建、ResNet50训练自己数据集、数据集处理、推理和验证、模型剪枝与模型改进等。 本篇教程适配各种分类识别任务,可以说是一个通用的教程,只需修改自己的数据集即可完成自己领域的任务和系统实现。 阅读详情

946. Validate Stack Sequences

Medium

Given two sequences pushed and popped with distinct values, return true if and only if this could have been the result of a sequence of push and pop operations on an initially empty stack.

 

Example 1:

Input: pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
Output: true
Explanation: We might do the following sequence:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

Example 2:

Input: pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
Output: false
Explanation: 1 cannot be popped before 2.

 

Constraints:

  • 0 <= pushed.length == popped.length <= 1000
  • 0 <= pushed[i], popped[i] < 1000
  • pushed is a permutation of popped.
  • pushed and popped have distinct values.


     

这题的思路就是用一个栈模拟进栈和出栈数字,并与popped序列比较。

比如pushed=[1,2,3,4,5],popped={4,5,3,2,1},先把1,2,3,4都压栈,然后发现4==popped[0],则4出栈,然后又把5压栈,5==popped[1],5出栈,然后3==popped[2], 2==popped[3], 1==popped[4],所以3,2,1分别出栈,最后栈空,所以合法。

但如果pushed=[1,2,3,4,5],popped={4,3,5,1,2},先把1,2,3,4都压栈,然后发现4==popped[0],则4出栈,然后又发现3==popped[1],3也出栈,然后5入栈,发现5==popped[2],5出栈,然后2入栈,1入栈,因为2!=popped[3] (1),所以没法继续pop了,最后栈里面还剩2,1,所以非法。
实现可以有2个思路,一个是遍历压栈序列,用while循环弹栈,另一个是遍历出栈序列,用while循环压栈。

解法1:遍历压栈序列,对每个数字,先压栈,然后用一个while循环:如果栈顶==当前出栈数字,则弹栈,出栈数字也往后移动一个,否则继续压栈。
 

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        int n = pushed.size();
        stack<int> s;
        int pop_index = 0;
        for (auto elem : pushed) {
            s.push(elem);
            while (!s.empty() && s.top() == popped[pop_index]) {
                s.pop();
                pop_index++;
            }
        }
        return s.empty();
    }
};

解法2:遍历出栈序列,对每个数字,先比较当前出栈数字和栈顶是否一样,否则用一个while循环不停压栈。出了while循环,说明2种可能:
1)当前栈顶==当前出栈数字,所以要弹栈,出栈数字往后移动一位
或者
2)数字全部压完了,这时候就应该返回false。
注意解法1有个好处就是因为是先压栈,所以判断栈空可以直接用s.empty(),而解法2是先弹栈,所以必须先压栈-1,判断栈空要用s.top() == -1。

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        int n = pushed.size();
        stack<int> s;
        s.push(-1);
        int pushed_index = 0, popped_index = 0;
        while (popped_index < n) {
            while (pushed_index < n && s.top() != popped[popped_index]) {
                s.push(pushed[pushed_index++]);
            }
            if (s.top() == popped[popped_index]) {
                s.pop();
                popped_index++;
            } else {
                return false;
            }
        }
        return s.top() == -1;
    }
};

也可以写成


class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        int n = pushed.size();
        stack<int> s;
        s.push(-1);
        int push_index = 0;
        for (auto elem : popped) {
            while (push_index < n && s.top() != elem) {
                s.push(pushed[push_index++]);
            }
            if (s.top() == elem) {
                s.pop();
            } else {
                return false;
            }
        }
        return s.top() == -1;
    }
};

 

皮肤病识别 - 使用DenseNet或EfficientNet模型在ISIC数据集上进行皮肤病识别任务 在本篇博客中,我们探讨了如何使用 DenseNet 和 EfficientNet 模型在 ISIC 数据集上进行皮肤病识别任务。我们加载了数据集,并进行了预处理。然后我们使用 Keras 构建了两个不同的模型,并训练和评估了它们。最后,我们使用训练好的模型对新的皮肤病图像进行了预测。 阅读详情

相关推荐

2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整论文+代码+结果

2024国赛A题参考论文。2024国赛D题参考论文。2024国赛E题参考论文。2024国赛B题参考论文。2024国赛C题参考论文。

qq_52590045的博客 5351

算法题之栈

文章目录1、每日温度(单调栈)题目分析复杂度2、下个更大元素Ⅰ/Ⅱ题目分析复杂度 关于单调栈: 关键词:下一个,上一个,最近,更大,更小 如果要找数组中比当前值大的最近值,就用单调递减栈,反之就用单调递增栈。这里需要注意相等的情况,视题目而定,看说的是大于还是不小于。 1、每日温度(单调栈) 题目 分析 这题其实如果想到用单调栈了的话就不难了,构建一个单调递减栈从后往前遍历,然后为了求距离还需要一个map来记录温度所在的位置。如果当前的温度比栈顶温度高就出栈,一直到栈为空或者找到比当前温度更高的温度为止

weixin_42137276的博客 816

eMMC FFU固件更新实战:从协议解析到设备修复

本文详细解析eMMC FFU固件更新技术,从协议原理到实战操作,涵盖EXT_CSD寄存器操作、命令流状态机解析及专业工具使用指南。通过真实维修案例,展示如何利用FFU机制修复设备故障,并提供高级优化技巧与安全注意事项,是硬件工程师和维修技术人员的实用参考。

weixin_29191761的博客 377

有多少小于当前数字的数字2020.11.05

LeetCode刷题19——有多少小于当前数字的数字2020.11.05题目思路 题目 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。 示例 1: 输入:nums = [8,1,2,2,3] 输出:[4,0,1,1,3] 解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2

qq_36400210的博客 157

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1008

Comsol超声空化气泡仿真:从基础理论到工业应用实践

本文详细介绍了Comsol超声空化气泡仿真的基础理论及工业应用实践。通过解析超声空化现象、Comsol模型搭建流程及求解器优化技巧,帮助工程师掌握气泡仿真技术,提升超声波清洗和乳液制备等工业应用的效率与质量。

weixin_27966471的博客 250

栈的弹出序列问题

给定栈的压入序列判断栈的弹出序列是否合法 附上动图,一看就会 代码在此: class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { Stack<Integer> stack =new Stack<>(); int i =...

CodeHunter_qcy 553

DC综合中set_dft_signal的实战配置与优化策略

本文深入解析了DC综合中set_dft_signal命令的实战配置与优化策略。文章从命令的核心作用出发,详细拆解了-view、-type、-usage等关键参数,并通过扫描使能与时钟门控的实战案例,展示了如何正确配置以实现测试模式下的功耗优化。同时,文章总结了高级优化策略、与低功耗流程的协同方法以及常见错误排查清单,旨在帮助数字芯片设计工程师构建高可测性、低功耗的稳健DFT基础。

weixin_28347369的博客 403

【LeetCode】946. Validate Stack Sequences 解题报告(Python & C++)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录题目描述题目大意解题方法模拟过程日期 题目地址:https://leetcode.com/problems/minimum-increment-to-make-array-unique/description/ 题目描述 Given two sequences pushed and...

负雪明烛 2012

CodeBuddy 接入 MCP,一键生成网站!

2024 年 11 月,Anthropic 公司搞了个挺有意思的新玩意 - Model Context Protocol(模型上下文协议)简称为 MCP 协议。简单来说,它就是给 AI 和各类工具数据之间搭了个标准化的”桥梁”,让开发者不用再为对接问题头疼了。mcp.so如下图所示,这是 mcp.so 网站中的 MCP Server。使用百度/高德地图分析旅线计算时间接 Puppeteer 自动操作网页使用 Github/Gitlab 让大模型接管代码仓库。

悟空聊架构的专栏 1943

OpenGL 进阶系列10 - 光线跟踪实现简介(Ray Tracing)

OpenGL 实现光线跟踪(Ray Tracing)是一个相对复杂但有趣的挑战,通常用于生成高度逼真的图像效果,如反射、折射、阴影等。OpenGL 本身并不是为光线跟踪设计的,但可以通过结合计算着色器和现代 OpenGL 功能实现光线跟踪。光线跟踪的基本思路是从相机(或视点)出发,发射光线并计算这些光线与场景中物体的交点。光线与场景中物体相交的计算。计算交点的光照(基于表面法线、光源位置、材质等)。反射和折射的处理(如果物体是透明或反射的)。

GPU全栈博主 1534

栈经典例题

一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( ) a) edcba b) decba c) dceab d) abcde 堆栈讲究先进后出,后进先出 选项1是abcde先入栈,然后依次出栈,正好是edcba 选项2是abcd先依次入栈,然后d出栈,e再入栈,e出栈 选项3是错误的,不可能a先出栈 选项4是a入栈,然后a出栈;b再入栈,b出栈。。。。。。依此类推 所以选3 思考:只要保证栈的入栈顺序就行了,可能是进着出着. ...

weixin_43897490的博客 3504

【深度学习】什么是交叉注意力机制?

输入序列:自注意力机制在同一个输入序列内建立注意力,交叉注意力机制在不同的输入序列间建立注意力。应用场景:自注意力机制多用于单一模态的任务(如纯文本任务),交叉注意力机制多用于多模态任务(如图像和文本的结合)。计算过程:自注意力机制的查询、键和值都来自同一个输入序列,而交叉注意力机制的查询来自一个输入序列,键和值来自另一个输入序列。

q742971636的博客 7366

第31题:LeetCode946. Validate Stack Sequences验证栈的序列

题目 给定 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)...

Lightmare625 358

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【小白爬Leetcode946】2.4 验证栈序列 Validate Stack Sequences

【小白爬Leetcode946】2.4 验证栈序列 Validate Stack Sequences题目Description中文描述思路一 用map的实现方法 Leetcode 946 medium\color{#FF6347}{medium}medium 点击进入原题链接:Leetcode946 最小栈 Min Stack 题目 Description Given two sequences pushed and popped with distinct values, return true i

weixin_41604040的博客 290

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Leetcode 946. Validate Stack Sequences 验证栈序列

Leetcode 946. Validate Stack Sequences 验证栈序列946. Validate Stack Sequences题目描述示例示例1示例2解答 946. Validate Stack Sequences 题目描述 Given two sequences pushed and popped with distinct values, return true if an...

importsys的博客 427

【Leetcode】946. Validate Stack Sequences

题目地址: https://leetcode.com/problems/validate-stack-sequences/ 给定一个入栈序列,再给定另一个序列,问其是否可能是一个合法的出栈序列。题目保证入栈序列数字彼此不同。 思路是直接用一个栈去模拟。先将入栈序列里的数入栈,然后中途如果发现栈顶等于了出栈序列里的值,则不停出栈。看最后操作完之后栈是否为空,若非空则说明序列不是合法的出栈序列。代码如下: import java.util.ArrayDeque; import java.util.Deque;

数学、算法爱好者的博客 357

LeetCode C++ 946. Validate Stack Sequences【Stack】中等

Given two sequences pushed and popped with distinct values, return true if and only if this could have been the result of a sequence of push and pop operations on an initially empty stack. Example 1: Input: pushed = [1,2,3,4,5], popped = [4,5,3,

memcpy0的博客 559

946. Validate Stack Sequences

946. Validate Stack Sequences class Solution { public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int> sta; ...

weixin_30487701的博客 153

LeetCode //C - 946. Validate Stack Sequences

Summary: This problem checks if a given popped sequence can be obtained from a pushed sequence using stack operations. We simulate the stack by pushing elements from pushed and popping them when they match the next element in popped. If all elements in pop

Made in Code 683

从‘列车厢调度’问题看栈(Stack)的实战应用:一个模型搞定PTA/LeetCode同类题

本文通过‘列车厢调度’问题深入解析栈(Stack)的实战应用,揭示如何将具体问题抽象为数据结构模型。文章提供通用解题模板,适用于PTA和LeetCode上的同类题目,帮助开发者掌握栈的核心操作与边界条件处理,提升算法解题效率。

diaolapei9880的博客 441

LeetCode 946. Validate Stack Sequences 栈的压入、弹出序列

1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。 示例 Input: pushed = [1,2,3,4,5], popped = [4,5,3,2,1] Output: true Explanation: We might do the following sequence: push(1), push(2)...

拾遗 650

[Leetcode刷题] - LC946 Validate Stack Sequences

本题考查对于Stack工作原理的理解,Stack出栈顺序是后进先出(LIFO),加入一个数组进栈顺序 [1,2,3,4,5],那么出栈就是[5,4,3,2,1], 如果期望出栈顺序是[4,5,3,2,1],那么必须在5进栈之前,要把4 pop出去。所以这道题整体思路就是一次将数字push进栈,设置一个指针记录当前出栈数字,如果进栈数==出栈数,那么将该数字pop,并且指针后移一步,最后判断指针是否指向末尾。

ok1382038的博客 122

leetcode 946 Validate Stack Sequences

leetcode 946 Validate Stack Sequences1.题目描述2.解题思路(1)方法1(2)方法23.Python代码(1)方法1(2)方法2 1.题目描述 给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。 示例 1: 输入:pushed = [1,...

GQxxxxxl的博客 505

946. Validate Stack Sequences验证栈序列

网址:https://leetcode.com/problems/validate-stack-sequences/ 参考:https://leetcode.com/problems/validate-stack-sequences/discuss/197667/Java-straight-forward-stack-solution. 模拟过程 class Solution { pu...

weixin_33704234的博客 204

leetcode 946. Validate Stack Sequences 验证栈序列-耗时100

Problem:耗时100%,双指针,栈,若pushed[l]!=popped[r]则入栈tk.push(pushed[l])且l++;,若pushed[l]==popped[r]则模拟出栈r++且l++,最后若是满足tk.top() == popped[r]则出栈r++且tk.pop(),否则break最后返回栈是否空。

邹九的个人博客 67

Leetcode 946. Validate Stack Sequences 栈的运用

思路 一开始没有思路,多画一画 简单样例,复杂样例 分解样例,连续样例 短期地想,长期地想 最终发现,可以构造一个栈 遍历输入的元素,如果如果刚好能和输出元素对上,就都跳过,反之入栈 最终遍历完成后,栈中元素应当能和剩余输出元素恰好对应上。最后栈空 class Solution { public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {.

Xurui_Luo的博客 211
上一篇: LintCode 1833: pen box (双指针好题)
下一篇: Leetcode 119: Pascal‘s Triangle II
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值