思路:
模拟一下,出入栈,是否能不发生冲突。
主要是思路是,从左往右遍历出栈顺序的时候,保证了一旦当前栈顶元素,为目前第一个需要出栈的,那么一定需要执行出栈操作。
有点类似贪心的意思。因为剩下等待入栈的元素一定是比我后出栈的,那么保证出栈顺序没问题,就需要保证,栈顶一旦出现第一个出栈的元素,就要立马出栈。
Code
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int>stk;
for(int i=0,j=0;i<(int)pushed.size();i++)
{
stk.push(pushed[i]);
while((int)stk.size()&&stk.top()==popped[j])
{
stk.pop();
j++;
}
}
return (stk.size()==0);
}
};