包含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】13.包含min函式的棧函式
- 力扣 - 劍指 Offer 30. 包含min函式的棧力扣函式
- 設計包含min函式的棧函式
- JZ-020-包含 min 函式的棧函式
- C語言函式呼叫棧C語言函式
- C語言 函式指標C語言函式指標
- 菲波那切數列(劍指offer)---c語言C語言
- c語言函式指標的定義C語言函式指標
- [每日一題] 第二十七題:包含min函式的棧每日一題函式
- C語言函式指標與回撥用函式C語言函式指標
- 《劍指 Offer》棧實現佇列佇列
- 劍指offer——正規表示式匹配C++C++
- C語言的函式C語言函式
- C語言函式指標與回撥函式使用方法C語言函式指標
- C語言 execve()函式C語言函式
- C語言常用函式C語言函式
- 劍指OFFER
- C語言qsort函式的使用C語言函式
- C語言函式sscanf()的用法C語言函式
- C語言語法基礎--S2函式和指標C語言函式指標
- 劍指Offer--面試題1:賦值運算子函式面試題賦值函式
- C語言基礎函式C語言函式
- 08. C語言函式C語言函式
- 鏈式棧介面設計(C語言)C語言
- 劍指offer——二叉樹的映象C++二叉樹C++
- 劍指offer——二叉樹的深度C++二叉樹C++
- C語言關於指標,gets()和gets_s()函式的理解C語言指標函式
- C語言函式傳遞指標引數的問題詳解C語言函式指標
- C語言解讀assert函式C語言函式
- C語言庫函式及示例C語言函式
- C#語言函式遞迴C#函式遞迴
- C語言資料結構:鏈式棧及其出入棧C語言資料結構
- 劍指offer | 09. 用兩個棧實現佇列佇列
- 劍指offer-用兩個棧實現佇列-php佇列PHP
- 劍指offer——把陣列排成最小的數C++陣列C++
- 劍指offer——陣列中的逆序對C++(75%)陣列C++
- 劍指offer導航