Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
模拟一个栈,能取出其中的最小元素。
typedef struct {
int* a;
int top;
int maxSize;
} MinStack;
void minStackCreate(MinStack *stack, int maxSize) {
stack->a = (int*)malloc(sizeof(int)*maxSize);
stack->top = 0;
stack->maxSize = maxSize;
}
void minStackPush(MinStack *stack, int element) {
stack->a[stack->top++] = element;
}
void minStackPop(MinStack *stack) {
stack->top--;
}
int minStackTop(MinStack *stack) {
return stack->a[stack->top - 1];
}
int minStackGetMin(MinStack *stack) {
int minimum = stack->a[0];
for (int i = 0;i < stack->top;i++){
if (minimum > stack->a[i]){
minimum = stack->a[i];
}
}
return minimum;
}
void minStackDestroy(MinStack *stack) {
free(stack->a);
}