劍指offer 21棧的壓入 彈出序列

2021-08-24 17:58:14 字數 549 閱讀 9717

題目描述

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

分析:

1.建立乙個輔助棧,將棧的壓入序列壓入到輔助棧中;

2.壓入乙個元素就與彈出序列(從棧底到棧頂)進行比較,如果輔助棧棧頂元素與彈出序列相等就彈出;

3.最後判斷輔助棧元素是否被完全彈出(為空),如果為空返回true,否則返回false;

class solution 

int i=0,j=0;

vector

stack;

for(i=0;istack.push_back(pushv[i]);

while(jstack.back()==popv[j])

}return

stack.empty();

}};

劍指offer 21 棧的壓入 彈出

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

《劍指offer》21 棧的壓入 彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路...

劍指Offer21 棧的壓入 彈出序列

思路 利用輔助棧來實現。先將pushv中元素壓入stack,然後判斷stack 1 和popv 0 是否相等,若相等則彈出,然後繼續判斷是否相等。當所有的元素全部壓入棧之後,stack的長度不等於0,則popv不是彈出序列。舉例 入棧1,2,3,4,5 出棧4,5,3,2,1 首先1入輔助棧,此時棧...