【C++算法】69.栈_验证栈序列

文章目录


题目链接:

946. 验证栈序列


题目描述:


解法

直接用栈来验证栈序列。


C++ 算法代码:

cpp 复制代码
class Solution 
{
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) 
    {
        // 验证栈序列算法
        // 基本思路:模拟栈的操作,看是否能够按照给定的顺序实现出栈
        
        stack<int> st;        // 用栈来模拟入栈和出栈操作
        int i = 0;            // 当前处理的popped数组的索引
        int n = popped.size(); // popped数组的长度
        
        // 遍历pushed数组中的每个元素
        for(auto x : pushed)
        {
            st.push(x);  // 将当前元素入栈
            
            // 尝试执行出栈操作:只要栈顶元素等于当前需要出栈的元素,就执行出栈
            while(st.size() && st.top() == popped[i])
            {
                st.pop();  // 弹出栈顶元素
                i++;       // 移动到popped数组的下一个元素
            }
        }
        
        // 如果所有元素都能正确出栈,则i应该等于n
        return i == n;
    }
};
相关推荐
一知半解仙6 分钟前
2026年彻底免费的辅助编程Agent大模型汇总
开发语言·人工智能·开源
Mr-Wanter19 分钟前
wsl2 jdk管理工具之sdkman
java·开发语言·sdkman
2502_9212860727 分钟前
【企业网络管理】DHCP 与 SAMBA:从协议原理到企业级实战配置全解析
开发语言·php
矮小的方盒29 分钟前
关于大型网站技术演进的思考(一)--存储的瓶颈(1)
开发语言
Maiko Star32 分钟前
Python核心语法——函数
开发语言·python
地平线开发者34 分钟前
征程 6E/M Matrix 开发评板使用系列(一):开箱与点亮
算法·自动驾驶
Jerry1 小时前
LeetCode 59. 螺旋矩阵 II
算法
可编程芯片开发1 小时前
基于FOC控制器的BLDC无刷直流电机控制系统matlab编程与仿真
算法
瓶中怪1 小时前
ROS2 机器人软件系统
linux·c++·python·ubuntu·vmware·ros2·机器人软件开发
大气的小蜜蜂1 小时前
基于Python+Django的健身房管理系统实现:核心亮点全流程解析
开发语言·python·django