原题链接
https://leetcode.com/problems/min-stack/
题意简单而言就是要实现一个快速求min的stack
这题本身不难,其实我用js已经AC了
但是当我用C重写一遍后一直re,我翻了leetcode的论坛没有发现我这个错误相关的问题在哪,也没有发现一个可行的C语言版题解,所以来这里问问
这里是我的reC语言解
typedef struct {
int *number;
int *min;
int ntop;
int mtop;
} MinStack;
void minStackCreate(MinStack *stack, int maxSize) {
stack->number = (int*)malloc(maxSize*sizeof(int));
stack->min = (int*)malloc(maxSize*sizeof(int));
stack->mtop = stack->ntop = 0;
stack->maxSize = maxSize;
}
void minStackPush(MinStack *stack, int element) {
stack->number[stack->ntop++] = element;
if (stack->mtop != 0) {
if (element <= stack->min[stack->mtop - 1])
stack->min[stack->mtop++] = element;
}
else
stack->min[stack->mtop++] = element;
}
void minStackPop(MinStack *stack) {
int temp = stack->number[stack->ntop--];
if (temp == stack->min[stack->mtop - 1])
stack->mtop--;
}
int minStackTop(MinStack *stack) {
return stack->number[stack->ntop - 1];
}
int minStackGetMin(MinStack *stack) {
return stack->min[stack->mtop - 1];
}
void minStackDestroy(MinStack *stack) {
free(stack->min);
free(stack->number);
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.