2020-06-28
1.題目描述
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設
壓入棧的所有數字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧
序列對應的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。
2.題解
對於pushed的每一個元素先入棧,如果棧頂元素始終和poped的元素相等的話,則一直出棧即可
3.代碼
class Solution {
public:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
int len=pushed.size();
if (!len) return true;
stack<int> mystack;
int j=0;
for (int i=0;i<len;i++){
mystack.push(pushed[i]);
while (!mystack.empty()&&mystack.top()==popped[j]){
mystack.pop();
j++;
}
}
if (j==len) return true;
return false;
}
};