我們關於棧的題目,這兩天做的還是挺多的,無非就是壓棧出棧。
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)
輸入兩個陣列,第乙個是入棧的順序,第二個是出棧的順序,判斷第二個陣列出棧的順序是否正確。
比如入棧:1,2,3,4,5
那齣棧:5,4,3,2,1 可以
4,5,3,2,1也可以。
4,5,3,1,2就不行。
所以我們遍歷第二個陣列,找到在第乙個陣列找中的位置,這樣在這之前的都先入棧,然後出棧。最後棧內容為空則表示,出棧的順序是可以的,否則就不行。
具體例子說明,比較清楚。
比如list1:
list2:{4,5,3,2,1}
先遍歷陣列list2
第乙個為4,找到在list1 中的位置為3記錄下來,將前面的數字都入棧。這時棧中的資料為1->2->3->4
然後出棧4,此時棧的資料為1->2->3。
第二個為5,找到在list1 中為4大於3 ,位置為4記錄下來,所以將list1 中的3+1 到4的資料壓入棧中,即將5壓入棧,此時棧的資料為:1->2->3->5
然後出棧5,此時棧的資料為1->2->3
第三個為3,此時在list1 中的位置為2小於4,等於3,直接出棧。此時棧的資料為1->2
第四個為2,此時在list1 中的位置為1小於4,等於2,直接出棧。此時棧的資料為1
第四個為1,此時在list1 中的位置為0小於4,等於1,直接出棧。此時棧的資料為空
所以說明list2 是一種出棧方式。
public boolean ispoporder(int pusha,int popa)
int temp=-1;
for(int i=0;imain 方法
劍指offer之棧的壓入 彈出序列
時間限制 1秒 空間限制 32768k 熱度指數 145390 本題知識點 棧 題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列...
劍指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是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。分析 用乙個輔助棧模擬壓入彈出操作,...