輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相...