首页 > 其他 > 详细

155. 最小栈

时间:2020-03-30 14:59:31      阅读:54      评论:0      收藏:0      [点我收藏+]

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

push(x) -- 将元素 x 推入栈中。
pop() -- 删除栈顶的元素。
top() -- 获取栈顶元素。
getMin() -- 检索栈中的最小元素。
示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-stack
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

#include <stdio.h>
#include <stdlib.h>
#define maxsize 1000
typedef struct Stack {
int top; //存储最小元素

int *arr;

} MinStack;
#define maxsize 1000
/** initialize your data structure here. */

MinStack* minStackCreate() {
MinStack * ps= (MinStack*)malloc(sizeof(MinStack)) ;
if (!ps) return NULL;

ps->arr =(int *)malloc(sizeof(int)*maxsize);
ps->top = -1 ;
return ps ;


}

void minStackPush(MinStack* ps, int val) {
if(ps->top == maxsize-1) return ;
else
{
ps->arr[++ps->top] = val;
}
}

void minStackPop(MinStack* ps) {
if(ps->top == -1)
{
return ;
}
else
{
ps->arr[ps->top--];
}
}

int minStackTop(MinStack* ps) {
int val;
val=ps->arr[ps->top];
return val;
}

int minStackGetMin(MinStack* ps) {

int i =ps->top;
int min =ps->arr[i];
if(ps->top==-1) return 0;
for(i=ps->top;i>-1;i--)
{
if(ps->arr[i]<min)
{

min=ps->arr[i];
}
}
return min ;
}

void minStackFree(MinStack* ps) {
free(ps);
}
int main()
{
int min,top;
MinStack * ps = minStackCreate();
minStackPush(ps,-2);
minStackPush(ps,0);
minStackPush(ps,-3);
min=minStackGetMin(ps);
printf("栈里最小元素是:%d\n",min);
minStackPop(ps);
top=minStackTop(ps);
printf("栈顶元素是:%d\n",top);
min=minStackGetMin(ps);
printf("栈里最小元素是:%d\n",min);
minStackFree(ps);

}

/**
* Your MinStack struct will be instantiated and called as such:
* MinStack* obj = minStackCreate();
* minStackPush(obj, x);

* minStackPop(obj);

* int param_3 = minStackTop(obj);

* int param_4 = minStackGetMin(obj);

* minStackFree(obj);
*/

155. 最小栈

原文:https://www.cnblogs.com/cocobear9/p/12598079.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!