NC272 栈的压入、弹出序列
栈的压入、弹出序列
https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId=196&tqId=39723&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj&difficulty=undefined&judgeStatus=undefined&tags=581&title=
已知入栈顺序求合法的出栈顺序
class Solution {
public:
//已知入栈的顺序求合法的出栈的顺序
bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
//可以先创建一个栈
stack<int>stack1;
int j=0;
//将第一个序列的元素压入栈中
//每压一个元素入栈,就判断一下如果栈非空且等于第二个序列对应的元素,就出栈,j++
for(int i=0;i<pushV.size();i++){
stack1.push(pushV[i]);
while(!stack1.empty()&&stack1.top()==popV[j]){
j++;
stack1.pop();
}
}
//最后如果第二个序列的所有的元素都有对应的出栈顺序与之匹配,就表示第二个序列是合法的出栈顺序
if(j==popV.size()){
return true;
}
return false;
}
};