剑指offer22 栈的压入、弹出序列

写的一个代码,虽然正确通过了,但我觉得会报vector越界的错误

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        int length1 = pushV.size();
        int length2 = popV.size();
        if(length1 <= 0 || length2 <= 0 || length1 != length2)
            return false;
        stack<int> sta;
        int current = 0;
        for(int i = 0;i < length2;i++){
            if(sta.empty()){
                while(pushV[current] != popV[i]){
                    if(current >= length1)
                        return false;
                    sta.push(pushV[current]);
                    current++;
                }
                current++;
            }
            else{
                if(sta.top() == popV[i]){
                    sta.pop();
                }
                else{
                    while(pushV[current] != popV[i]){
                        if(current >= length1)
                            return false;
                        sta.push(pushV[current]);
                        current++;
                    }
                    current++;
                }
            }
        }
        return true;
    }
};

 

posted @ 2017-07-26 11:18  有梦就要去实现他  阅读(117)  评论(0编辑  收藏  举报