题链接:https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/
使用一个辅助栈来模拟压入弹出,每次进行压入的操作,就判断栈顶元素是否等于弹出序列的当前元素,等于就将辅助栈中符合弹出序列的元素全部弹出。最后辅助栈为空则弹出序列正确。
使用变量popIndex表示弹出序列的当前元素的下标。
/**
* @param {number[]} pushed
* @param {number[]} popped
* @return {boolean}
*/
var validateStackSequences = function(pushed, popped) {
let stack = [];
let popIndex = 0;
for (let i = 0; i < pushed.length; i++) {
stack.push(pushed[i]);
while (stack[stack.length - 1] == popped[popIndex]) {
stack.pop();
popIndex++;
if (popIndex == popped.length) {
break;
}
}
}
if (stack.length == 0) {
return true;
} else {
return false;
}
};
O(n)的时间复杂度和O(n)的空间复杂度。