题目描述:
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数。
接下来有n行,每行开始有一个字母Ci。
Ci=’s’时,接下有一个数字k,代表将k压入栈。
Ci=’o’时,弹出栈顶元素。
输出:
对应每个测试案例中的每个操作,
若栈不为空,输出相应的栈中最小元素。否则,输出NULL。
样例输入:
7
s 3
s 4
s 2
s 1
o
o
s 0
样例输出:
3
3
2
1
2
3
0
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
int top=-1;
/*在栈顶索引指针为top时,向栈A中压入数据data*/
bool push(int *A,int data)
{
if(top>=MAX-1||top<-1)
return false;
A[++top]=data;
return true;
}
/*
在栈顶索引指针为top时,出栈
*/
bool pop()
{
if(top<0)
return false;
top--;
return true;
}
//Min栈作为辅助栈,栈顶存储栈中最小的元素
void minAll(int* A,int*Min)
{
if(top>MAX-1)
return;
Min[0]=A[0];
for(int i=1;i<=top;i++)
{
if(Min[i-1]>A[i])
Min[i]=A[i];
else
Min[i]=Min[i-1];
}
}
/*返回栈顶为top 时栈中的元素的最小值*/
int min(int *Min)
{
return Min[top];
}
int main()
{
int num;
int A[MAX];
int Min[MAX];
while(scanf("%d",&num)!=EOF)
{
for(int i=0;i<num;i++)
{
char ci;
while(getchar()!='\n')
continue;
scanf("%c",&ci);
if(ci=='s')
{
int k;
scanf("%d",&k);
push(A,k);
}
if(ci=='o')
pop();
minAll(A,Min);
if(top<0)
printf("NULL\n");
else
printf("%d\n",min(Min));
}
}
return 0;
}
结果:
分享到:
相关推荐
实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。
标题中的“包含min函数的栈1”指的是一个特殊的栈数据结构,它除了具有常规栈的基本功能(push、pop和top)之外,还提供了一个额外的min函数,可以在常数时间内返回栈内当前最小元素。这样的设计是为了解决在处理一...
包含min函数的栈.md
python 实现 包含min函数的栈
java基础面试题包含min函数的栈本资源系百度网盘分享地址
c++ c++_剑指offer题解之包含min函数的栈
本文实例讲述了Python实现包含min函数的栈。分享给大家供大家参考,具体如下: # coding=utf8 ''' 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。 在该栈中,调用min、push及pop的...
剑指Offer(Python多种思路实现):包含min函数的栈 面试30题: 题目:包含min函数的栈 题:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min、push、pop的时间复杂度都是O(1) ...
python python_剑指offer第20题包含min函数的栈
30. 包含 min 函数的栈题目链接牛客网题目描述实现一个包含 min() 函数的栈,该方法返回当前栈中最小的值。在对栈进行 push 入栈和 pop 出栈操
面试题30. 包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复
面试题30:包含min函数的栈题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。方法准备一个辅助栈,每次都把最小的元素(之前的最小元素
20 - 包含min函数的栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。# 每次pop操作时需
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。void push(int value) {这是对两个栈进行操作的一个题目,push,po
代码type MinStack struct {a []int//存储元素b []int //辅助栈 维护栈的最小值/* initialize your dat
# Python实现《剑指offer》 部分代码自己添加了一些测试用例, 或者自己添加了一些功能 1. 初级程序员注重算法和数据结构 2. 事先做好准备,对工作有热情 3. 面试过程放松。不要急于写代码,了解清楚所要解决的问题,...
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push...
包含min的最小栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 min 函数。public void push(int num) {pub
2. 设计包含min函数的栈 这个问题考察了栈数据结构的实现和min函数的实现。要求设计一个栈数据结构,添加一个min函数,能够得到栈的最小元素,且min函数、push函数和pop函数的时间复杂度都是O(1)。 这个问题的解决...