剑指offer-20:包含min函数的栈
目录
1题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
2题目答案
使用栈,要先包含头文件 : #include< stack>
定义栈,以如下形式实现: stack s;
其中Type为数据类型(如 int,float,char等)。
栈的主要操作:
s.push(item); //将item压入栈顶
s.pop(); //删除栈顶的元素,但不会返回
s.top(); //返回栈顶的元素,但不会删除
s.size(); //返回栈中元素的个数
s.empty(); //检查栈是否为空,如果为空返回true,否则返回false
/*
* 1.dataStack为存储数据的栈,minStack为存储最小值的栈;
* 2.push的时候将value值与minStack中的top值比较,
小则minStack push value,大则push top值
* 3.pop删除栈顶不返回, top返回栈顶不删除
*/
class Solution {
public:
stack<int> dataStack, minStack;
void push(int value) {
dataStack.push(value); //所有的数据都要压入数据堆栈
if (minStack.empty())
minStack.push(value);
else{
int min = minStack.top(); //新来的值与minStack的栈顶值比较,小的压入minStack栈顶
value<=min?minStack.push(value):minStack.push(min);
}
}
void pop() {
dataStack.pop();
minStack.pop();
}
int top() {
return dataStack.top();
}
int min() {
return minStack.top();
}
};