設計一個支持 push,pop,top 操做,並能在常數時間內檢索到最小元素的棧。spa
示例:設計
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2.
這個題目採用時間換空間的方法,咱們配置兩個棧,一個就是符合上述操做的正常棧stack
,還有一個棧minStack
儲存最小值。也就是getMin()
獲取最小元素的方法實際是從minStack
中獲取。code
入棧 3 | | | | | | | | |_3_| |_3_| stack minStack 入棧 4 , 4 大於 minStack 棧頂,不處理 | | | | | 4 | | | |_3_| |_3_| stack minStack 入棧 2 ,此時右邊的 minStack 棧頂就保存了當前最小值 2 | 2 | | | | 4 | | 2 | |_3_| |_3_| stack minStack 出棧 2,此時右邊的 minStack 棧頂就保存了當前最小值 3 | | | | | 4 | | | |_3_| |_3_| stack minStack 出棧 4,右邊 minStack 不處理 | | | | | | | | |_3_| |_3_| stack minStack 出棧 3 | | | | | | | | |_ _| |_ _| stack minStack