包含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; } };
相关文章推荐
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- C++基于栈实现铁轨问题
- 数据结构之Treap详解
- 浅析C语言中堆和栈的区别
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Array栈方法和队列方法的特点说明
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort