面试题目21—包含min函数的栈
2017-06-27 09:35
225 查看
题目:定义栈的数据结构,在该类型中实现一个能够得到栈的最小元素的min函数,调用min、push以及pop的时间复杂度都是O(1).
代码示例:
#include<iostream>
using namespace std;
# define MaxSize 20
class MyStack
{
int data[MaxSize];
int m_data[MaxSize];
int length;
public:
MyStack()
{
length = -1;
}
~MyStack()
{
}
void push(int n);
void pop(int &n);
int min(void);
};
void MyStack::push(int n)
{
if (length == -1)
{
length++;
data[length] = n;
m_data[length] = n;
return ;
}
//
length++;
data[length] = n;
if (m_data[length - 1] > n)
{
m_data[length] = n;
}
else
{
m_data[length] = m_data[length-1];
}
}
void MyStack::pop(int &n)
{
if (length == -1)
{
n = -1;
return;
}
n = data[length];
length--;
//
}
int MyStack::min(void)
{
if (length != -1)
{
return m_data[length];
}
else
{
return -1;
}
}
void main()
{
MyStack mystack;
mystack.push(6);
mystack.push(0);
mystack.push(1);
mystack.push(8);
mystack.push(9);
mystack.push(3);
cout << "最小值:" << mystack.min() << endl << endl;
int n;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl<<endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
}
代码示例:
#include<iostream>
using namespace std;
# define MaxSize 20
class MyStack
{
int data[MaxSize];
int m_data[MaxSize];
int length;
public:
MyStack()
{
length = -1;
}
~MyStack()
{
}
void push(int n);
void pop(int &n);
int min(void);
};
void MyStack::push(int n)
{
if (length == -1)
{
length++;
data[length] = n;
m_data[length] = n;
return ;
}
//
length++;
data[length] = n;
if (m_data[length - 1] > n)
{
m_data[length] = n;
}
else
{
m_data[length] = m_data[length-1];
}
}
void MyStack::pop(int &n)
{
if (length == -1)
{
n = -1;
return;
}
n = data[length];
length--;
//
}
int MyStack::min(void)
{
if (length != -1)
{
return m_data[length];
}
else
{
return -1;
}
}
void main()
{
MyStack mystack;
mystack.push(6);
mystack.push(0);
mystack.push(1);
mystack.push(8);
mystack.push(9);
mystack.push(3);
cout << "最小值:" << mystack.min() << endl << endl;
int n;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl<<endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
//
mystack.pop(n);
cout << "栈顶元素" << n << "出栈:" << n;
cout << "最小值:" << mystack.min() << endl << endl;
}
相关文章推荐
- 题目21:包含min函数的栈
- 【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
- 剑指offer-4-面试21:包含min函数的栈
- 【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
- 剑指offer-面试题21-包含min函数的栈
- 剑指Offer题目1522:包含min函数的栈
- 剑指offer21-包含min函数的栈
- 剑指offer——面试题21:包含min函数的栈
- 剑指offer面试题21:包含min函数的栈
- 剑指offer代码解析——面试题21包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 面试题21 包含min函数的栈
- 剑指offer题21 包含min函数的栈
- 剑指offer面试题21-包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 剑指offer-面试题21-包含min函数的栈
- 剑指offer--面试题21:包含min函数的栈
- 面试题21:包含min函数的栈
- 剑指offer代码解析——面试题21包含min函数的栈
- 经典面试题21——包含min函数的栈