• 【剑指offer】21 栈的压入、弹出序列


    题目地址:栈的压入、弹出序列

    题目描述                                   

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
       

    题目示例                                   

    输入:
    [1,2,3,4,5],[4,3,5,1,2]
    返回值:
    false

    解法分析                                   

    栈的元素先进后出,可以使用辅助栈来保存压入的元素,然后对比弹出栈中的元素是否相等。

    代码                                         

     1 function IsPopOrder(pushV, popV)
     2 {
     3     // write code here
     4     if(pushV.length == 0 || popV.length == 0 || pushV.length != popV.length) return false;
     5     var arr = [];
     6     var boo = false;
     7     while(arr.length || pushV.length){
     8         while(arr[arr.length - 1] === popV[0] && arr.length){
     9             arr.pop();
    10             popV.shift();
    11         }
    12         if(!popV.length) boo = true;
    13         if(!pushV.length){
    14             break;
    15         }
    16         arr.push(pushV.shift());
    17     }
    18     return boo;
    19 }

    执行结果                                   

  • 相关阅读:
    【转】Skynet之消息队列
    [转]Skynet之斗转星移
    [转]skynet Lua中的协程
    win7 + nginx + php
    LexAndYacc 安装程序
    ubuntu + samba 共享失败
    [转]TDD之Dummy Stub Fake Mock
    【转】 纯技术帖:MMOG网络同步算法揭秘
    [转]帧锁定同步算法
    [转]游戏中的同步
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14365225.html
Copyright © 2020-2023  润新知