《剑指offer》栈的压入、弹出序列

【 声明:版权所有,,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】

题目链接:?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;}};

版权声明:本文为博主原创文章,如果转载,请注明出处

每当我看天的时候我就不喜欢再说话,每当我说话的时候我却敢看天。

《剑指offer》栈的压入、弹出序列

相关文章:

你感兴趣的文章:

标签云: