改了两行,比之前快了不少,稍微记录下
本题就是模拟出栈入栈的过程。
// t-31
/**
* @param {number[]} pushed
* @param {number[]} popped
* @return {boolean}
*/
var validateStackSequences = function(pushed, popped) {
let stack = [];
// 思路很简单,popped首元素即先出栈的元素
// 该元素能出栈,按照入栈顺序,在其之前的一定要先入栈
// pushed不为空
while(pushed.length){
let tmp = popped.shift(); // 取出出栈的元素
while(stack[stack.length - 1] != tmp && pushed.length){
stack.push(pushed.shift()); // 入栈过程
}
if(stack[stack.length - 1] != tmp) return false;
else stack.pop();
}
// pushed为空,popped只能按序输出
while(stack.length){
if(stack.pop() != popped.shift()) return false;
}
return true;
};