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;
    }
};
相关推荐
酉鬼女又兒3 分钟前
零基础快速入门前端JavaScript 浏览器环境输入输出语句全解析:从弹框交互到控制台调试(可用于备赛蓝桥杯Web应用开发赛道)
前端·javascript·职场和发展·蓝桥杯·js
木井巳3 分钟前
【递归算法】全排列
算法·leetcode·决策树·深度优先·剪枝
qq_466302454 分钟前
vs2022 与Qt版本兼容 带来的警告
c++·qt
dapeng28706 分钟前
C++与Docker集成开发
开发语言·c++·算法
2501_945423547 分钟前
C++中的策略模式实战
开发语言·c++·算法
2301_792308259 分钟前
C++与自动驾驶系统
开发语言·c++·算法
会编程的土豆10 分钟前
【数据结构与算法】LCS刷题
数据结构·算法·动态规划
无敌憨憨大王11 分钟前
最小生成树
算法
Jasmine_llq12 分钟前
《B4258 [GESP202503 一级] 四舍五入》
数据结构·算法·整数运算实现四舍五入整十数算法·批量输入遍历算法·逐行输出算法·整数算术运算组合算法·顺序输入处理算法
tobias.b12 分钟前
计算机基础知识-计算机组成原理
考研·面试·职场和发展