題目描述首先理解題意,題目中給了乙個例子,[1,2,3,4,5]與[4,5,3,2,1],壓出棧順序如下:輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)
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就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度...