设计一个支持 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
typedef struct {
int *data;
int top;
} MinStack;
/** initialize your data structure here. */
MinStack* minStackCreate() {
MinStack* m = (MinStack*)malloc(sizeof(MinStack));
m->data = (int*)malloc(sizeof(int) * 0xffff);
m->top = -1;
return m;
}
void minStackPush(MinStack* obj, int val) {
if (obj->top >= 0xffff) {
return;
}
obj->top++;
obj->data[obj->top] = val;
}
void minStackPop(MinStack* obj) {
if (obj->top <= -1) {
return;
}
obj->top--;
}
int minStackTop(MinStack* obj) {
if (obj->top <= -1){
return -1;
}
return obj->data[obj->top];
}
int minStackGetMin(MinStack* obj) {
if (obj->top <= -1){
return -1;
}
int min = obj->data[0];
for (int i = 0; i <= obj->top; i++){
if (obj->data[i] < min){
min = obj->data[i];
}
}
return min;
}
void minStackFree(MinStack* obj) {
free(obj->data);
free(obj);
}