面试题31:栈的压入,弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入操作,第二个序列表示栈的弹出顺序,假设所有数字不相等,请判断是否合法。

  • 解析:如果弹出的数字和栈顶元素相等,则弹栈,如果弹出的数字和栈顶不相等,则压栈,如果最终所有的元素都被压栈。最终栈不为空,则不合法。
import java.util.Stack;

public class isPopSolution {
    public boolean IsPopOrder(int[] push,int[] pop){
        if(push.length==0||pop.length==0||push.length!=pop.length) return false;
        int length = pop.length;
        int popIndex = 0;
        int pushIndex = 0;
        Stack<Integer> stack = new Stack<>();
        while(length>pushIndex){
            while(stack.isEmpty()||stack.top!=pop[popIndex]){
                if(pushIndex==length)
                    break;
                stack.push(pushIndex);
                pushIndex++;
            }
            if(stack.top!=pop[popIndex]) break;;
            stack.pop();
            popIndex++;
        }

        if(length==popIndex&&stack.isEmpty()) return true;
        return false;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天和姐姐一起去市里玩,经过宝龙广场的红绿灯,因着这一地段比较繁华,所以红绿灯往往需要等好几个才能过去,我们便停下...
    猫妖之毓泽阅读 144评论 0 1
  • 最好的季节 盛开最绚丽的花 不需要约定 也不必为谁 盛开和凋落 一念之间
    梅落惊风雨阅读 253评论 0 1
  • 时光,就这样静静的,流淌。 四季轮回,转眼又是春暖花开。 你说;喜欢春,因为我们相遇在春天。 我便一直在春的门楣上...
    远离世味的驿站阅读 257评论 0 0