前端|LeetCode155_最小棧

題目

設計一個支持 push,pop,top 操做,並能在常數時間內檢索到最小元素的棧。spa

  • push(x) -- 將元素 x 推入棧中。
  • pop() -- 刪除棧頂的元素。
  • top() -- 獲取棧頂元素。
  • getMin() -- 檢索棧中的最小元素。

示例:設計

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

實現

Untitled (5).jpeg

相關文章
相關標籤/搜索