【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;
    }
};
相关推荐
码匠许师傅3 小时前
【C++ 面试真题】C++ 的 const 和 constexpr 有什么区别?
c++·面试
坚持编程的菜鸟4 小时前
模拟实现memmove
c语言·算法·模拟实现memmove
BUG研究员_4 小时前
Runnable与LCEL
开发语言·人工智能·python
wabs6666 小时前
关于图论【最短路径之Dijkstra算法(堆优化版)|卡码网47.参加科学大会的思考】
数据结构·算法·图论·优先级队列·邻接表·小顶堆·卡码网
果果燕6 小时前
实习笔记(一):NFS、Samba、VNC、Git、CMake、systemd、内核、交叉编译
linux·arm开发·c++·笔记·git
坚持编程的菜鸟6 小时前
编写判断大小端程序
c语言·算法·判断大小端
papaofdoudou6 小时前
判断排列逆序奇偶性的乘积判别法(范德蒙德符号法)
人工智能·算法
牛艺翔6 小时前
C++基础
开发语言·c++
键盘会跳舞6 小时前
C++ :容器适配器stack源码级拆解
开发语言·c++··stack·先进后出
linux-hzh6 小时前
百日算法修炼 · Day 03
java·算法