【leetcode】Min Stack

来源:互联网 发布:性直播软件下载 编辑:程序博客网 时间:2024/06/06 02:51

Problem

这里写图片描述

Code

typedef struct {    int *value;     //Array to put elements    int minIndex;   //The minimum's index    unsigned int length;    //The elements' number    unsigned int size;      //The capacity} MinStack;void minStackCreate(MinStack *stack, int maxSize) {    stack->size = maxSize;    stack->length = 0;    stack->value = (int*)calloc(maxSize,sizeof(int));    stack->minIndex = 0;}void minStackPush(MinStack *stack, int element) {    if(stack->length == stack->size)        return;    stack->value[stack->length++] = element;    stack->minIndex = stack->value[stack->minIndex] > element ? stack->length-1 : stack->minIndex;}void minStackPop(MinStack *stack) {    if(!stack->length)        return;    --stack->length;    /* If the deleted element is the minimun */    if(stack->length == stack->minIndex){        stack->minIndex = 0;        /* Find the minimun's index */        for(int i=1;i<stack->length;++i)            stack->minIndex = stack->value[stack->minIndex] > stack->value[i] ? i : stack->minIndex;    }}int minStackTop(MinStack *stack) {    if(!stack->length)        return 0;    return stack->value[stack->length-1];}int minStackGetMin(MinStack *stack) {    if(!stack->length)        return 0;    return stack->value[stack->minIndex];}void minStackDestroy(MinStack *stack) {    free(stack->value);}

Comments

This is a very simple problem,but it is useful in the reality.

0 0
原创粉丝点击