栈的压入弹出序列offer

bool isPopOrder(const int * pPush,const int * pPop, int nLength){
    bool res = false;

    if (pPush != nullptr && pPop != nullptr && nLength > 0){
        const int * pNextPush = pPush;
        const int * pNextPop = pPop;
        stack<int> stackData;

        while(pNextPop - pPop < nLength) {
            while(stackData.empty() || stackData.top() != *pNextPop) {
                if(pNextPop - pPop == nLength)
                    break;
                stackData.push(*pNextPush);

                pNextPush++;
            }
            if(stackData.top() != *pNextPop)
                break;
            stackData.pop();
            pNextPop++;

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

推荐阅读更多精彩内容