码迷,mamicode.com
首页 > 其他好文 > 详细

【35】栈的压入弹出判断

时间:2016-05-14 06:48:16      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

题目:

给定两个整数序列,第一个序列是栈的压入序列,判断第二个是不是栈的弹出序列?假设不重复,比如1,2,3,4,5和4,5,3,2,1

思路:

  • 如果下一个弹出的数字刚好是栈顶数字,那么弹出。不在栈顶,持续压入,知道弹出的数字和栈顶一样,如果压完,还没找到,那么返回false。

代码:

boolean isPopOrder(int[] push,int[] pop,int length){
    boolean possible = false;
    int i = 0;
    int j = 0;
    Stack<Integer> data = new Stack<Integer>();
    while(j < length){
        while(data.empty() || data.top != pop[j]){
            if(i >= length){
                break;
            }
            data.push(push.[i]);
            i++;
        }
        if(data.top != pop[j]){
            break;
        }
        data.pop();
        j++;
    }
    if(data.empty() && j == length){
        possible = true;
    }
    return possible;
}

- 安利一个面试题汇总的微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号名称:IT面试题汇总

微信订阅号二维码如下:

技术分享

【35】栈的压入弹出判断

标签:

原文地址:http://blog.csdn.net/lpjishu/article/details/51400766

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!