leetcode 946 验证栈序列

一、题目描述

二、解题思路

整体思路

可以借助来模拟进、出栈过程。如果可以顺利完成整个过程,就说明这个序列是合法的,返回true,反之,就说明这个序列不是合法的,返回false。

具体思路

(1)声明栈st,i指向popped的当前位置,n初始化为popped的size;

(2)遍历pushed数组:

<1>首先,将x进栈;

<2>如果栈不为空且st.top()==popped[i],就执行出栈操作,并使得i++;

(3)如果popped数组可以遍历完,则代表这个序列是一个合法的序列,反之,就是一个不合法的序列,所以只要返回i==n就行;

三、代码实现

cpp 复制代码
class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        stack<int> st;
        int i=0,n=popped.size();
        for(auto x:pushed){
            st.push(x);
            while(st.size()&&st.top()==popped[i]){
                st.pop();
                i++;
            }
        }
        return i==n;
    }
};
相关推荐
Keep__Fighting20 小时前
【机器学习:线性回归】
人工智能·python·算法·机器学习·支持向量机·线性回归·scikit-learn
for_ever_love__20 小时前
引用的基本用法及本质
算法
MadPrinter20 小时前
FindQC 实战 (一):基于 SerpApi 的电商高质量图片自动化筛选算法初探
运维·python·算法·自动化
小毅&Nora20 小时前
【人工智能】【深度学习】 ③ DDPM核心算法介绍:从噪声到图像的魔法
人工智能·深度学习·算法
freedom_1024_20 小时前
C++运算符重载:从本质到实践
开发语言·c++
h***015420 小时前
图解缓存淘汰算法 LRU、LFU | 最近最少使用、最不经常使用算法 | go语言实现
算法·缓存·golang
sheeta199820 小时前
LeetCode 每日一题笔记 日期:2025.12.01 题目:2141.同时运行 N 台电脑的最长时间
笔记·leetcode·电脑
moonquakeTT20 小时前
雷达信号处理中的CFAR检测关键要点
人工智能·算法·目标跟踪·fmcw毫米波
元亓亓亓20 小时前
LeetCode热题100--34. 在排序数组中查找元素的第一个和最后一个位置--中等
数据结构·算法·leetcode
郝学胜-神的一滴20 小时前
Linux信号的概念与机制
linux·服务器·开发语言·c++·程序人生