下面要给大家分享的是一个和栈的压入、弹出序列有关的内容,一起来了解一下吧。
题目:
输入2个整数序列,第1个序列表示栈的压入顺序,请判断第2个序列是否是这个栈的弹出顺序。
假设:
压入栈的所有数字都不相等。
例:
序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是这个压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是这个压栈序列的弹出序列。
注:
这2个序列的长度是相等的。
思路1
代码实现:class Solution {
public:
bool IsPopOrder(vector
pushV,vector
popV) {
if(pushV.size() == 0) return false;
vector
stack;
for(int i = 0,j = 0 ;i
stack.push_back(pushV[i++]);
while(j
stack.pop_back();
j++;
}
}
return stack.empty();
}
};
思路2:
借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,随后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,一直到相