《剑指offer》栈的压入、弹出序列
2015-09-11 15:57
232 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
思路
每次,我们只需要扫描入栈的数组,然后判断现在入栈的元素与现在将要删除的元素是否相等,如果相等,则删除现在入栈的元素。
等入栈数组扫描完之后,如果此时栈非空,则一个个将栈内的元素弹出,并且与要删除的元素相比,如果相等则删除,如果不等则返回false,一直到清空栈。
class Solution
{
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV)
{
int len1 = pushV.size();
int len2 = popV.size();
if(len1!=len2 || len1==0)
return false;
stack<int> S;
int cur = 0;
for(int i = 0; i<len1; i++)
{
S.push(pushV[i]);
if(S.top()==popV[cur])
{
cur++;
S.pop();
}
}
while(!S.empty())
{
if(S.top()!=popV[cur])
return false;
cur++;
S.pop();
}
return true;
}
};
相关文章推荐
- jquery表单验证插件
- links and inode
- 前端开发实用在线工具
- [转载] 关关采集不能生成html的问题
- javascript知识
- html5/css3响应式布局介绍及设计流程
- emberjs初学记要
- jQuery EasyUI datagrid实现本地分页的方法
- 一直以来对于返回jsp页面的认识错误
- 页面加载时执行js代码的2种方式与差别
- 《剑指offer》包含min函数的栈
- js年月日级联菜单示例代码
- javascript获取上一工作日
- JavaScript 函数调用
- 【剑指offer】十八,二叉搜索树与双向链表
- C/S File Transfer Swing
- 如何用javascript获取当前时间戳:
- javascript函数参数
- CSS3 抛物线 加入购物车
- 前端javascript框架之AngularJS学习笔记