一刷劍指Offer 31 棧的壓入和彈出序列

2021-10-04 18:36:05 字數 1060 閱讀 5837

1、題目描述:

2、思路:

嘗試按照 popped 中的順序模擬一下出棧操作,如果符合則返回 true,否則返回 false。這裡用到的貪心法則是如果棧頂元素等於 popped 序列中下乙個要 pop 的值,則應立刻將該值 pop 出來。

使用乙個棧來模擬該操作。將 pushed 陣列中的每個數依次入棧,同時判斷這個數是不是 popped 陣列中下乙個要 pop 的值,如果是就把它 pop 出來。最後檢查棧是否為空。

3、實現方式1:

class

solution

}return stack.

empty();}}

4、實現方式2:

class

solution2

if(stack.

peek()

!=popped[i]

)else

}return

true;}

}

5、測試類:

public

class

main

;// int poped = ;

int[

] poped =

; solution solution =

newsolution()

; system.out.

println

(solution.

validatestacksequences

(pushed, poped));

}}

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

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

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

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

劍指Offer 31 棧的壓入 彈出序列

題目輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。leetcode中也有相同的題目 驗證棧序列 解決思路 依次將第乙個序列的元素壓入棧中 判斷這個元素是不是第二個序列中的將要pop的值 如果是則從棧中彈出此元素,將要pop的值的後移...