剑指Offer-20-包含min函数的栈

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//额外开辟一个栈存储每层的最小值
class Solution {
public:
stack<int> stk1;
stack<int> min_stk2;//存储最小栈
void push(int value) {
stk1.push(value);
if(!min_stk2.empty()){
int top = min_stk2.top();
if(value<top)
min_stk2.push(value);
else
min_stk2.push(top);
}else
min_stk2.push(value);

}
void pop() {
stk1.pop();
min_stk2.pop();
}

int top() {
return stk1.top();
}
int min() {
return min_stk2.top();
}
};

----\(˙<>˙)/----赞赏一下吧~