已知栈的压入顺序,判断弹出顺序是否正确。
function mysort(pushV,popV){
// 出栈顺序是否正确根据辅助栈的长度,如果为0则表示可以全部出栈
var arr=[pushV[0]];
for(var i=0;i<popV.length;i++){
// 栈顶元素不等于当前元素则继续入栈
if(arr[arr.length-1]!=popV[i]){
// 当原始栈还有元素则可以继续入辅助栈
for(var j=arr.length;j<pushV.length;j++){
if(arr.length<pushV.length&&arr[arr.length-1]!=popV[i]){
arr.push(pushV[j])
}
// 添加之后再判断1次
if(arr[arr.length-1]==popV[i]){
arr.pop()
pushV.splice(arr.length,1)
break;
}
}
}else{
// 如果相等则出栈
arr.pop()
}
}
return arr.length==0?true:false;
}
console.log(mysort([1, 2, 3, 4, 5],[5,4,3,1,2]))
前端基础笔记——判断出栈顺序是否正确
最新推荐文章于 2024-03-28 17:37:35 发布