题解 | #栈的压入、弹出序列#

栈的压入、弹出序列

https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106

这个题目的思路我也是参考评论区的大佬的:
1.这个题目接收两个整数序列,也就是两个参数,我们先要定义一个新的栈,也就是arr=[]数组

    let arr =[]

2.我们要循环第一个栈pushV也就是第一个参数,讲每次循环的元素push到新栈arr中

for(let i =0; i < pushV.length;i++){
    arr.push(pushV[i]) //这个时候的arr 为 1
}
  1. 我们这个时候再使用while循环 执行条件为arr.length > 0
      while(arr.length >0){             //这个时候arr的长度为1 >0 进入该循环
     }

4.此时如果新栈arr中的顶元素也就是arr数组中最后一个值,等于第二个队列popV中的首元素,
此时新栈arr中的元素要出栈,将新栈中栈顶元素也就是最后一个元素弹出,并删除第二个序列第一个元素

if(arr[arr.length -1] == popV[0]){ 
    arr.pop()
    popV.shift()      
}

5.如果上述if条件不成立的话就else 跳出while循环,

else{
      break
}
//进入到arr.push(pushV[i]) 代码块当前  
/*
     arr = 1,2,3,4,5
     popV =4,5,3,2,1
     1> 0 true  1 == 4 ?  else  brak
     2> 0 true  2 == 4 ?  else  brak
     3> 0 true  3 == 4 ?  else  brak
     4> 0 true  4 == 4 ?  true   arr.pop()  popV.shift()
     此时arr 为1 2 3 
     此时popV 为5,3,2,1 此时再会进入循环 因为arr的长度为
     3 >0  true 3 == 5 ?  else  brak
     此时arr为 1 2 3 5
     4 >0 true  5 ==5 true  arr.pop()  popV.shift()
     此时arr 为1 2 3 
     此时popV 为3,2,1
     3> 0 true  3 == 3 true   arr.pop()  popV.shift()
     依次

*/

6.当所有条件都执行完 return arr.length==0 ? true : false

#技术序列和测试序列#
全部评论
太赞了,厉害
点赞 回复 分享
发布于 2022-10-22 20:31 陕西

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务