本文共 1475 字,大约阅读时间需要 4 分钟。
设计一个支持 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.#include#include #define MAXSIZE 1600typedef struct { int *data; int top;} MinStack;/** initialize your data structure here. */MinStack* minStackCreate() { MinStack *obj=(MinStack *)malloc(sizeof(MinStack)); obj->data=(int *)malloc(MAXSIZE*sizeof(int)); obj->top=-1; return obj;}void minStackPush(MinStack* obj, int x) { if(obj->top==MAXSIZE-1){ }else if(obj->top==-1){ obj->top++; obj->data[obj->top]=x; obj->top++; obj->data[obj->top]=x; }else{ int tmp=obj->data[obj->top]; obj->top++; obj->data[obj->top]=x; if(tmp top++; obj->data[obj->top]=tmp; }else{ obj->top++; obj->data[obj->top]=x; } }}void minStackPop(MinStack* obj) { if(obj->top==-1){ }else{ obj->top--; obj->top--; }}int minStackTop(MinStack* obj) { if(obj->top==-1){ return; } return obj->data[obj->top-1];}int minStackGetMin(MinStack* obj) { return obj->data[obj->top];}void minStackFree(MinStack* obj) { free(obj->data); obj->data=NULL; free(obj); obj=NULL;}
转载地址:http://uzkti.baihongyu.com/