您的位置:首页 > 理论基础 > 数据结构算法

包含min函数的栈

2016-07-21 12:32 344 查看


题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
两个辅助栈:

/*
* 1.dataStack为存储数据的栈,minStack为存储最小值的栈;
* 2.push的时候将value值与minStack中的top值比较,小则minStack push value,大则push top值
*/
class Solution {
public:
stack<int> dataStack, minStack;
void push(int value)
{
dataStack.push(value);
if (minStack.empty()||value<minStack.top())
{
minStack.push(value);
}
else
{
minStack.push(minStack.top());
}

}
void pop()
{
dataStack.pop();
minStack.pop();
}
int top()
{
return dataStack.top();
}
int min()
{
return minStack.top();
}
};
一个辅助栈:

每个函数只需一句

 
stack<pair<
int
int
>
> s;


first 元素

second 当前最小值

#define MIN(a, b) ((a) < (b) ? (a) : (b))
class Solution {
stack<pair<int, int> > s;
public:
void push(int value) {
s.push(pair<int, int>(value, s.empty() ? value : MIN(value, min())));
}
void pop() {
s.pop();
}
int top() {
return s.top().first;
}
int min() {
return s.top().second;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息