To_10_r_100_2---设计包含min函数的栈
2015-06-08 17:25
423 查看
题目:
设计包含min函数的栈
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。
方法一:
思路:栈中的每个元素维护一个min元素
C++代码实现:
struct MinStackElement{
int value;
int min;
};
class MinStack{
public:
MinStack(int maxSize){
data = new MinStackElement[maxSize];
size = maxSize;
top = 0;
}
~MinStack(){
delete[] data;
}
void MinStackPush(int in){
if (top == size){
cout << "ERROR: OUT OF STACK SPACE." << endl;
return;
}
data[top].value = in;
data[top].min = (top == 0 ? in : data[top - 1].min);
if (data[top].min > in)
data[top].min = in;
top++;
}
int MinStackPop(){
if (top == 0){
cout << "ERROR: STACK IS EMPTY" << endl;
return -2333333;
}
return data[--top].value;
}
int MinStackMin(){
if (top == 0){
cout << "ERROR: STACK IS EMPTY" << endl;
return -2333333;
}
return data[top - 1].min;
}
private:
MinStackElement *data;
int size;
int top;
};
题目:
设计包含min函数的栈
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。
方法一:
思路:栈中的每个元素维护一个min元素
C++代码实现:
struct MinStackElement{
int value;
int min;
};
class MinStack{
public:
MinStack(int maxSize){
data = new MinStackElement[maxSize];
size = maxSize;
top = 0;
}
~MinStack(){
delete[] data;
}
void MinStackPush(int in){
if (top == size){
cout << "ERROR: OUT OF STACK SPACE." << endl;
return;
}
data[top].value = in;
data[top].min = (top == 0 ? in : data[top - 1].min);
if (data[top].min > in)
data[top].min = in;
top++;
}
int MinStackPop(){
if (top == 0){
cout << "ERROR: STACK IS EMPTY" << endl;
return -2333333;
}
return data[--top].value;
}
int MinStackMin(){
if (top == 0){
cout << "ERROR: STACK IS EMPTY" << endl;
return -2333333;
}
return data[top - 1].min;
}
private:
MinStackElement *data;
int size;
int top;
};
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- java数据结构和算法学习之汉诺塔示例
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- Lua学习笔记之数据结构
- Redis中5种数据结构的使用场景介绍
- PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
- JavaScript数据结构与算法之栈详解
- 数据结构之红黑树详解
- 数据结构之位图(bitmap)详解
- 数据结构之伸展树详解
- 利用Python演示数型数据结构的教程
- MongoDB系列教程(七):MongoDb数据结构详解