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;
    }
};
相关推荐
zhouwy1131 分钟前
Linux网络编程从入门到精通
linux·c++
迷途之人不知返1 分钟前
deque的简单认识
数据结构·c++
上弦月-编程3 分钟前
指针编程:高效内存管理核心
java·数据结构·算法
罗超驿4 分钟前
双指针算法经典案例:LeetCode 283. 移动零(Java详解)
java·算法·leetcode
人道领域11 分钟前
【数据结构与算法分析】二叉树面试通关手册:遍历图解 · 分类对比 · 代码模板
数据结构·算法·leetcode·深度优先
水蓝烟雨13 分钟前
2901. 最长相邻不相等子序列 II
算法·leetcode
zhouwy11313 分钟前
C++ STL标准模板库详解
c++
郝学胜-神的一滴16 分钟前
二分类任务核心:BCE 损失函数从原理到 PyTorch 实战
人工智能·pytorch·python·算法·机器学习·分类·数据挖掘
.54819 分钟前
Two Pointers(双指针)
java·数据结构·算法
li16709027021 分钟前
第二十五章:C++11(下)
c语言·开发语言·数据结构·c++