包含min函式的棧(劍指offer)---C語言
定義棧的資料結構,請在該型別中實現一個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min、push 及 pop 的時間複雜度都是 O(1);
示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.
提示:
各函式的呼叫總次數不超過 20000 次
typedef struct
{
int top;
int min_top;
int *stack;
int *min_stack;
} MinStack;
/** initialize your data structure here. */
MinStack* minStackCreate()
{
MinStack *obj = (MinStack*)malloc(sizeof(MinStack));
obj->stack = (int*)malloc(sizeof(int)*10000);
obj->min_stack = (int*)malloc(sizeof(int)*10000);
obj->top = -1;
obj->min_top = -1;
return obj;
}
void minStackPush(MinStack* obj, int x)
{
obj->stack[++obj->top] = x;
if(obj->min_top == -1)
{
obj->min_stack[++obj->min_top] = x;
}
else if(obj->min_stack[obj->min_top] >= x)
{
obj->min_stack[++obj->min_top] = x;
}
}
void minStackPop(MinStack* obj)
{
if(obj->stack[obj->top] == obj->min_stack[obj->min_top])
{
obj->top--;
obj->min_top--;
}
else
{
obj->top--;
}
}
int minStackTop(MinStack* obj)
{
return obj->stack[obj->top];
}
int minStackMin(MinStack* obj)
{
return obj->min_stack[obj->min_top];
}
void minStackFree(MinStack* obj)
{
free(obj->stack);
free(obj->min_stack);
free(obj);
}
/** * Your MinStack struct will be instantiated and called as such: * MinStack* obj = minStackCreate(); * minStackPush(obj, x); * minStackPop(obj); * int param_3 = minStackTop(obj); * int param_4 = minStackMin(obj); * minStackFree(obj);*/
相關文章
- 劍指offer——包含min函式的棧函式
- 【劍指offer】包含min函式的棧函式
- 【劍指offer】13.包含min函式的棧函式
- 力扣 - 劍指 Offer 30. 包含min函式的棧力扣函式
- (十四)劍指offer之棧的壓入彈出序列及包含min函式的棧函式
- 包含min函式的棧函式
- 設計包含min函式的棧函式
- JZ-020-包含 min 函式的棧函式
- 菲波那切數列(劍指offer)---c語言C語言
- C語言函式呼叫棧C語言函式
- C語言 函式指標C語言函式指標
- 《劍指 Offer》棧實現佇列佇列
- 劍指offer——正規表示式匹配C++C++
- c語言函式指標的定義C語言函式指標
- C語言函式指標基礎C語言函式指標
- [每日一題] 第二十七題:包含min函式的棧每日一題函式
- C語言函式指標與回撥用函式C語言函式指標
- python高階函式和C語言函式指標Python函式C語言指標
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- 劍指Offer--面試題1:賦值運算子函式面試題賦值函式
- C語言的函式C語言函式
- C語言函式指標與回撥函式使用方法C語言函式指標
- 【劍指offer】字串的排列字串
- 【劍指offer】兩個棧實現一個佇列佇列
- 【劍指offer】兩個佇列實現一個棧佇列
- 【演算法】設計包含 min函式的棧,時間複雜度都是 O(1)演算法函式時間複雜度
- 劍指offer——二叉樹的映象C++二叉樹C++
- 劍指offer——二叉樹的深度C++二叉樹C++
- C語言 execve()函式C語言函式
- C語言常用函式C語言函式
- C語言語法基礎--S2函式和指標C語言函式指標
- 劍指offer | 09. 用兩個棧實現佇列佇列
- 劍指offer-用兩個棧實現佇列-php佇列PHP
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串的組合字串
- C語言函式sscanf()的用法C語言函式
- C語言qsort函式的使用C語言函式
- 劍指offer——把陣列排成最小的數C++陣列C++