劍指Offer 出棧順序的判斷正誤

2021-10-01 22:57:44 字數 776 閱讀 2923

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

**

class

solution

;//全部存放1

int i,j,m=

0,n;

n=len-1;

i =findi

(popv[m]

,pushv,len);if

(i==-1

);while

(n>0)

;int um=0;

if(i;//j++;

}else

//in[i+1]=0;

i=j;

} n--;if

(um>2)

;}return

true;}

;int

findi

(int n,vector<

int> pushv,

int len)

;return-1

;};}

;

總結

我使用的是一次遍歷,時間複雜度為o(n) ,定義乙個輔助陣列,來儲存對應的位置,並初始化為1,遍歷之後設定為0,在根據兩個資料的位置來判斷是否符合出棧順序要求。

劍指offer 判斷出棧順序是否正確

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

劍指offer 入棧 出棧正確性的判斷

判斷元素出棧 入棧順序的合法性。如 入棧的序列 1,2,3,4,5 出棧序列 是 4,5,3,2,1 是合法序列,入棧的序列 1,2,3,4,5 出棧序列為 1,5,3,2,4 是不合法序列 我的解題思路 建立乙個輔助棧來模擬入棧與出棧過程,從而判斷其入棧 出棧順序是否合法。定義兩個陣列in與out...

劍指Offer 數字出棧入棧

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