面試題22 棧的壓入,彈出系列

2021-07-14 07:07:46 字數 646 閱讀 5232

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

看到該題目開始想的是用乙個棧去實現。思路也是對的,但是思路出來了**沒寫出來,各種錯誤,心裡很急躁啊,靜不下心來調,只有看書上**了。

思路是:設定乙個棧,現將第乙個序列依次入棧,如果棧頂元素是第二個棧的要彈出的元素,就直接彈出。如果下乙個彈出的數字不在棧頂,我們把壓棧序列中還沒有入棧的數字壓入棧,直到下乙個需要彈出的數字壓入棧頂為止。如果所有的 數字都壓入棧中,此時還沒有彈出,則,不可能是乙個彈出序列。

**如下:

class solution {

public:

bool ispoporder(vectorpushv,vectorpopv) {

bool bpossible=false;

if(pushv.size()!=popv.size())

return bpossible;

int len=pushv.size();

stackst;

int i=0,j=0;

if(len>0)

{while(j

面試題22 棧的壓入彈出序列

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

面試題22 棧的壓入 彈出序列

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

面試題22 棧的壓入 彈出序列

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