力扣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到栈中,就会出现访问越界。

以后写要注意啊

相关推荐
一只懒洋洋12 小时前
中值滤波、方框滤波、高斯滤波、均值滤波、膨胀、腐蚀、开运算、闭运算
算法·均值算法
shellvon12 小时前
你怎么被识别的?从TLS到Canvas的设备追踪术
后端·算法
薛定谔的算法13 小时前
JavaScript栈的实现与应用:从基础到实战
前端·javascript·算法
羚羊角uou13 小时前
【Linux】匿名管道和进程池
linux·c++·算法
空白到白14 小时前
决策树-面试题
算法·决策树·机器学习
flashlight_hi14 小时前
LeetCode 分类刷题:2563. 统计公平数对的数目
python·算法·leetcode
前端世界14 小时前
HarmonyOS 数据处理性能优化:算法 + 异步 + 分布式实战
算法·性能优化·harmonyos
楼田莉子14 小时前
C++算法专题学习:栈相关的算法
开发语言·c++·算法·leetcode
kyle~14 小时前
排序---冒泡排序(Bubble Sort)
c语言·c++·算法
l1t14 小时前
我改写的二分法XML转CSV文件程序速度追上了张泽鹏先生的
xml·c语言·人工智能·算法·expat