1. 程式人生 > >[劍指offer] 20. 包含min函式的棧

[劍指offer] 20. 包含min函式的棧

題目描述

定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))。
利用兩個棧,一個棧來正常儲存所有元素,另一個棧作為輔助。僅在以下情況使用: push: 當輔助棧為空,或者輔助棧頂元素大於入棧元素時,輔助棧也push(value) pop: 當輔助棧頂元素等於主棧頂元素時,輔助棧也pop() min: 返回輔助棧棧頂元素
class Solution
{
public:
  stack<int> sta1;
  stack<int
> sta2; void push(int value) { sta1.push(value); if (sta2.empty() || sta2.top() > value) sta2.push(value); } void pop() { if (sta2.top() == sta1.top()) sta2.pop(); sta1.pop(); } int top() { return sta1.top(); } int min() { return sta2.top(); } };