2022年12月12日 星期一

[155] Min Stack

先用無腦線性search 寫了一個XD
typedef struct {
int *stack;
int top;
// int min;
} MinStack;


MinStack* minStackCreate() {
MinStack *obj = malloc (sizeof (MinStack));
obj->stack = malloc (sizeof(int)*30001);
obj->top= -1;

return obj;
}

void minStackPush(MinStack* obj, int val) {
(obj->top)++;
obj->stack[obj->top]=val;
return;
}

void minStackPop(MinStack* obj) {
if (obj->top>=0)
(obj->top)--;
}

int minStackTop(MinStack* obj) {
if (obj->top>=0)
return obj->stack[obj->top];
else
return -1;
}

int minStackGetMin(MinStack* obj) {
int min=INT_MAX;
for (int i=0;i<=obj->top;i++)
{
if (obj->stack[i]<min)
min=obj->stack[i];
}
return min;
}

void minStackFree(MinStack* obj) {
free(obj->stack);
free(obj);
}

/**
* Your MinStack struct will be instantiated and called as such:
* MinStack* obj = minStackCreate();
* minStackPush(obj, val);
* minStackPop(obj);
* int param_3 = minStackTop(obj);
* int param_4 = minStackGetMin(obj);
* minStackFree(obj);
*/
然後對別人的暫存min 法感到驚為天人!!!
所以第二天再寫一個 !
寫完速度超好多XD 真是精妙啊~(鼓掌叫好)

typedef struct {
int *stack;
int top;
int min;
} MinStack;


MinStack* minStackCreate() {
MinStack *obj = malloc (sizeof (MinStack));
obj->stack = malloc (sizeof(int)*30001);
obj->top= -1;
obj->min= INT_MAX;
return obj;
}

void minStackPush(MinStack* obj, int val) {
(obj->top)++;
if (obj->min < val)
obj->stack[obj->top]=val;
else
{
obj->stack[obj->top]=obj->min;
obj->min = val;
(obj->top)++;
obj->stack[obj->top]=val;
}

return;
}

void minStackPop(MinStack* obj) {
if (obj->top<0)
return;
if (obj->min == obj->stack[obj->top])
{
obj->min = obj->stack[(obj->top)-1];
(obj->top)--;
}
(obj->top)--;
}

int minStackTop(MinStack* obj) {
if (obj->top>=0)
return obj->stack[obj->top];
else
return -1;
}

int minStackGetMin(MinStack* obj) {
return (obj->min);
int min=INT_MAX;
for (int i=0;i<=obj->top;i++)
{
if (obj->stack[i]<min)
min=obj->stack[i];
}
return min;
}

void minStackFree(MinStack* obj) {
free(obj->stack);
free(obj);
}

/**
* Your MinStack struct will be instantiated and called as such:
* MinStack* obj = minStackCreate();
* minStackPush(obj, val);
* minStackPop(obj);
* int param_3 = minStackTop(obj);
* int param_4 = minStackGetMin(obj);
* minStackFree(obj);
*/

沒有留言:

張貼留言