题目
思路
使用栈来模拟入栈出栈的过程。新建一个栈data用于模拟这个过程。
1、按照pushed的顺序将元素push进入到栈data
2、每push一个元素,就检查一下data的栈顶元素是否与popped首部元素相同,如果相同就弹出data的栈顶元素,并将popped的首部元素指向下一个元素,直到两元素不同。
3、如果最后栈data为空,则说明栈序列有效,否则无效。
代码
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
std::stack<int> data;
int flag=0,i=0;
int len = popped.size();
while(flag<len)
{
if(!data.empty() && data.top()==popped[flag])
{
data.pop();
flag++;
}
else if(i<pushed.size())
{
data.push(pushed[i]);
i++;
}else
{
flag++;
}
}
if(data.empty())
{
return true;
}else
{
return false;
}
}
};