Leetcode155.最小棧題解
阿新 • • 發佈:2020-08-11
題意
所謂最小棧就是要在本來棧的定義上多了一個操作,getMin()
操作——返回棧中最小值。
思路
- 很樸素的一個想法是用返回最小值的時候從頭到尾遍歷一遍找最小。也就是下面程式碼1.0。實際上提交發現這個是非常耗時的(300ms+)。
- 程式碼1.0的缺陷在於每次獲得最小值都要去遍歷一遍操作。在此基礎上,有了另一個想法,我們可以用一個變數來儲存最小值。不難想到,當出棧的元素剛好是儲存的最小值的元素的時候,我們如何找到下一個最小值。我的想法很乾脆,遍歷一遍找就好了。出乎意料的是,表現竟然還可以(60ms+),和題解的表現基本持平。
- 最後這個思路是看了題解才知道的,用輔助棧的思路。每次入棧元素的時候輔助棧就入隊當前的最小元素。即任何時刻棧的最小元素都在輔助棧棧頂