> 技术文档 > 力扣946. 验证栈序列

力扣946. 验证栈序列

力扣946. 验证栈序列
这一题的思路和下面一题是一摸一一样的,都是模拟一个栈的过程。

PAT 1051 Pop Sequence

因此代码是简单的:

class Solution {public: int cut=0; stack s; bool validateStackSequences(vector& pushed, vector& popped) { for(int i=0;i=pushed.size()) {  return false; } int x=pushed[cut]; s.push(x); if(s.size()>popped.size()) {  return false; } cut++; } s.pop(); } return true;  }};

我在写的时候出现了报错
力扣946. 验证栈序列
出现了堆缓冲区溢出,访问 std::vector 时越界了。原因是我当时写的是

if(cut>pushed.size()){ return false;}

应该是

if(cut>=pushed.size()){ return false;}

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