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

2022-01-29 05:35:21 字數 815 閱讀 7462

題目描述

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

首先理解題意,題目中給了乙個例子,[1,2,3,4,5]與[4,5,3,2,1],壓出棧順序如下:

1入棧2入棧

3入棧4入棧,4出棧

5入棧,5、3、2、1出棧

在這裡說一下大體思路,首先建立乙個臨時陣列arr和乙個計數器index=0,遍歷pushv,向arr中壓入遍歷的元素,然後判斷棧頂的元素是否等於popv[index],不等於的話繼續遍歷,如果等於的話將棧頂的元素彈出,index加一,繼續判斷棧頂的元素是否等於popv[index],直到棧為空或者不等於為止。

如果說第二個序列為該棧的彈出順序,那麼最後arr應該為空,所以最後只要判斷其是否為空即可。

function ispoporder(pushv, popv) 

let arr = ;

let index = 0;

for (let item of pushv) else

}} return arr.length==0;

}

劍指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就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路...

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

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