劍指Offer---棧的壓入和彈出序列

【題目】
  
  輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)

【代碼實現】

bool IsPopOrder(vector<int> pushV,vector<int> popV) {
    if(pushV.size() == 0 || popV.size() == 0){
        return false;
    }
    stack<int> st;
    for(int i=0, j=0; i<pushV.size(); i++){
        st.push(pushV[i]);
        while(!st.empty() && st.top() == popV[j]){
            st.pop();
            j++;
        }
    }
    return st.empty();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章