1. 程式人生 > >leetcode-棧總結

leetcode-棧總結

leetcode-155-最小棧(min stack)-java
解法1(用2個棧)
由於用常數時間得到最小值,顯然要以空間換時間
設定兩個stack,一個為數的stack,一個為此時min的stack
插入一個數,如果它比min的top都小,則min add 它 否則 add min的top
解法2(一個棧,一個min)
在入棧時,如果這個元素比最小值小,那麼,我們讓最小值入棧,然後將元素值賦給最小值,即新的最小值,然後正常將這個元素入棧;在出棧時,如果棧頂元素與最小值相等,說明他的下一個元素是之前push的最小值(上一個),出棧後,將這個之前的最小值賦值給最新的最小值。(每次push進去的最小值都是下面元素的最小值)