力扣946. 验证栈序列

这一题的思路和下面一题是一摸一一样的,都是模拟一个栈的过程。

PAT 1051 Pop Sequence

因此代码是简单的:

c++ 复制代码
class Solution {
public:
    int cut=0;
    stack<int> s;
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
      
       for(int i=0;i<popped.size();i++)
       {
             while(s.empty()||s.top()!=popped[i])
             {
                if(cut>=pushed.size())
                {
                    return false;
                }
                int x=pushed[cut];
                s.push(x);
                if(s.size()>popped.size())
                {
                    return false;
                }
                cut++;
              
             }
             s.pop();
       } 
       return true;
       



    }
};

我在写的时候出现了报错

出现了堆缓冲区溢出,访问 std::vector 时越界了。原因是我当时写的是

c++ 复制代码
if(cut>pushed.size())
{
   return false;
}

应该是

c++ 复制代码
if(cut>=pushed.size())
{
   return false;
}

因为cut是从0开始的,所以不能cut==pushed.size(),如果把cut=pushed.size(),让它push到栈中,就会出现访问越界。

以后写要注意啊

相关推荐
qq_416018721 分钟前
实时数据可视化库
开发语言·c++·算法
格林威1 分钟前
工业相机参数解析:曝光时间与运动模糊的“生死博弈”
c++·人工智能·数码相机·opencv·算法·计算机视觉·工业相机
2401_8732046515 分钟前
C++中的策略模式进阶
开发语言·c++·算法
xushichao198920 分钟前
C++中的职责链模式实战
开发语言·c++·算法
大鹏说大话27 分钟前
数据库查询优化全攻略:从索引设计到架构演进
算法
小O的算法实验室27 分钟前
2025年IEEE TETCI SCI2区,一种用于二次无约束二进制优化的协同神经动力学算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
2301_8184190133 分钟前
C++中的协程编程
开发语言·c++·算法
add45a35 分钟前
C++中的工厂方法模式
开发语言·c++·算法
無限進步D43 分钟前
二分算法 cpp
算法
xushichao198943 分钟前
C++中的工厂模式高级应用
开发语言·c++·算法