美文网首页
2019-07-17栈的压入、弹出序列

2019-07-17栈的压入、弹出序列

作者: mztkenan | 来源:发表于2019-07-17 19:59 被阅读0次

1hour,两个地方的问题。第一次面向测试用例编程

# -*- coding:utf-8 -*-
class Solution:
    tmp=[]
    def IsPopOrder(self, pushV, popV):
        if not popV or not pushV:return False #鲁棒性
        for a in pushV:
            if popV[0]==a:
                popV.pop(0)
                while self.tmp and popV and self.tmp[-1]==popV[0]: # 这里会越界
                    self.tmp.pop()  #这里少了把tmp中弹出
                    popV.pop(0)
            else:
                self.tmp.append(a)
        if not popV: return True
        else:return False



if __name__ == '__main__':
    t=Solution()
    print(t.IsPopOrder([1,2,3],[1,2,3]))
    print(t.IsPopOrder([1,2,3,4,5],[4,5,3,2,1]))
    print(t.IsPopOrder([],[]))
    print(t.IsPopOrder([1],[]))
    print(t.IsPopOrder([],[1]))
    print(t.IsPopOrder([1,2,3],[3,1,2]))

优秀的程序,其实思路一样的,就是更有逻辑

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        if(pushV.size() == 0) return false;
        vector<int> stack;
        for(int i = 0,j = 0 ;i < pushV.size();){
            stack.push_back(pushV[i++]);
            while(j < popV.size() && stack.back() == popV[j]){
                stack.pop_back();
                j++;
            }      
        }
        return stack.empty();
    }
};

相关文章

  • 剑指offer-21~25

    21.栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压...

  • 31:栈的压入、弹出序列

    题目31:栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断二个序列是否为该栈的弹出顺序。假...

  • 剑指offer.C++.code21-25

    21. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假...

  • 22 栈的压入、弹出序列 (栈混洗 stack permutat

    栈的压入、弹出序列 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出...

  • 《剑指offer》— JavaScript(21)栈的压入、弹出

    栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。...

  • 剑指offer刷题记录(C++版本)(之三)

    21.栈的压入,弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出...

  • 面试题31. 栈的压入、弹出序列

    栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。...

  • JZ-021-栈的压入、弹出序列

    栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺...

  • 刷前端面经笔记(十一)

    1.栈的压入和弹出 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压...

  • 《剑指offer》(二十一)--栈的压入、弹出序列(java)

    栈的压入、弹出序列 考点:栈 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该...

网友评论

      本文标题:2019-07-17栈的压入、弹出序列

      本文链接:https://www.haomeiwen.com/subject/qlnclctx.html