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;
}
栈的压入弹出序列offer
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。...
- 本系列导航:剑指offer(第二版)java实现导航帖 面试题31:栈的压入弹出序列 题目要求:输入两个整数序列,...
- 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相...
- 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 解法:开一个辅助栈,模...