leetcode 946 验证栈序列

一、题目描述

二、解题思路

整体思路

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

具体思路

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

(2)遍历pushed数组:

<1>首先,将x进栈;

<2>如果栈不为空且st.top()==poppedi,就执行出栈操作,并使得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;
    }
};
相关推荐
y1su3 分钟前
Leetcode 链表,树,回溯 模板
java·leetcode·链表
罗湖老棍子11 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
文丑颜不良啊12 小时前
LeetCode201~225题目解析
java·leetcode
努力实干12 小时前
面向对象设计原则——C++
开发语言·c++·数码相机
stsdddd13 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码14 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n14 小时前
【算法】约瑟夫环问题
java·算法
syagain_zsx15 小时前
jsoncpp 使用指南:编译链接、Json::Value 取值与高频坑
c++·json·库·http格式
l1t15 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil20815 小时前
LeetCode 283移动零
数据结构·算法·leetcode