具体思路:
栈模拟问题;
两种思路:
- 自己想的是根据poped进行遍历枚举,逻辑比较复杂;
- 优秀题解的是直接队pushed进行压栈,同时对比栈顶元素,这样更直接一点;
具体代码:
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int>st;
int n=popped.size();
int index=0;
int pin=0;
while(index<n){
if(!st.empty()&&st.top()==popped[index]){
index++;
st.pop();
continue;
}
while(pin<pushed.size()&&pushed[pin]!=popped[index]){
st.push(pushed[pin++]);
}
if(pin==pushed.size())
return false;
index++;
pin++;
}
return true;
}
};