最小栈
难度:Easy
题目描述
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
- push(x) – 将元素 x 推入栈中。
- pop() – 删除栈顶的元素。
- top() – 获取栈顶元素。
- getMin() – 检索(retrievie)栈中的最小元素。
示例
1 | MinStack minStack = new MinStack(); |
解法一
1 | class MinStack { |
思路
用两个栈,s1来按顺序存储push进来的数据,s2的栈顶用来存最小值
知识点
stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO)。
定义stack对象的示例如下:1
2stack<int> s1;
stack<string> s2;
stack的基本操作如下:
函数名 | 功能 | 复杂度 |
---|---|---|
size() | 返回栈的元素数 | O(1) |
top() | 返回栈顶的元素 | O(1) |
pop() | 从栈中取出并删除元素 | O(1) |
push(x) | 向栈中添加元素x | O(1) |
empty() | 在栈为空时返回true | O(1) |
解法二
1 | class MinStack { |
知识点
常量INT_MAX 表示最大整数 2^31-1,INT_MIN表示最小整数-2^31