【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;
    }
};
相关推荐
busideyang几秒前
函数指针类型定义笔记
c语言·笔记·stm32·单片机·算法·嵌入式
Wect1 分钟前
LeetCode 215. 数组中的第K个最大元素:大根堆解法详解
前端·算法·typescript
原来是猿4 分钟前
关于【进程池阻塞 + 子进程未回收问题】
linux·服务器·c++
C澒7 分钟前
PC 桌面富应用:速分客户端
前端·c++·electron·web app
深邃-12 分钟前
数据结构-双向链表
c语言·开发语言·数据结构·c++·算法·链表·html5
2401_8785302114 分钟前
分布式任务调度系统
开发语言·c++·算法
愤豆15 分钟前
06-Java语言核心-JVM原理-JVM内存区域详解
java·开发语言·jvm
wzhidev15 分钟前
04、Python核心数据类型详解:从一段诡异的调试说起
开发语言·python
luanma15098015 分钟前
Laravel 7.X核心特性深度解析
android·开发语言·php·lua·laravel
@haihi20 分钟前
ESP32 MQTT示例解析
开发语言·网络·mqtt·github·esp32