題目描述
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)
**思路:**首先判斷長度是否相等。(魯棒性)
然後我們從壓棧序列開始,i是壓棧序列哨兵,j是彈棧序列哨兵。然後從i=0開始壓入乙個輔助棧,並且判斷此時輔助陣列的隊尾是不是彈棧序列的第 j 位(同時j到不到最後一位),如果等於,且未超過末尾。彈出此時的輔助佇列末尾並將j++;
最終如果輔助隊列為空,說明為真,否則為假
**:
class
solution
}//此時,如果輔助佇列有數,說明錯誤
return helper.
empty()
;}};
面試題22 根據棧的壓入序列,判斷彈出序列是否合法
1.輸入兩個整數序列,第乙個式進棧的順序序列,第二個是出棧的順序序列,判斷出棧的序列是否合法。分析 先根據出站的序列,來判斷是非要進棧,如果當前的棧頂的元素和出站序列中的要比較的元素不相等,剩餘的進棧序列繼續進棧,直到棧頂的元素和出站的序列的元素相等。如果相等的話,則彈出棧頂的元素,繼續比較下乙個元...
劍指offer 棧的壓 彈出序列
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 是某棧的壓棧序列,序列 是該壓棧序列對應的乙個彈出序列,但 就不可能是該壓棧序列的彈出序列。思路 按照入棧序列,將陣列壓入棧中,每壓入乙個數字,就判斷棧頂數字和出棧序列的數字...
劍指offer 棧的壓入 彈出序列
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。分析 用乙個輔助棧模擬壓入彈出操作,...