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;
    }
};
相关推荐
im_AMBER1 小时前
Leetcode 52
笔记·学习·算法·leetcode
神仙别闹1 小时前
基于QT(C++) 实现哈夫曼压缩(多线程)
java·c++·qt
包饭厅咸鱼2 小时前
PaddleOCR----制作数据集,模型训练,验证 QT部署(未完成)
算法
无敌最俊朗@2 小时前
C++ 并发与同步速查笔记(整理版)
开发语言·c++·算法
王哈哈^_^2 小时前
【完整源码+数据集】课堂行为数据集,yolo课堂行为检测数据集 2090 张,学生课堂行为识别数据集,目标检测课堂行为识别系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
测试19982 小时前
Appium使用指南与自动化测试案例详解
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
夏鹏今天学习了吗2 小时前
【LeetCode热题100(66/100)】寻找两个正序数组的中位数
算法·leetcode·职场和发展
墨染点香3 小时前
LeetCode 刷题【151. 反转字符串中的单词】
算法·leetcode·职场和发展