【演算法】設計包含 min函式的棧,時間複雜度都是 O(1)
設計包含 min函式的棧。
定義棧的資料結構,要求新增一個 min 函式,能夠得到棧的最小元素。
要求函式 min,push 以及 pop 的時間複雜度都是 O(1)
以下程式採用順序連結串列實現,實現時參考了相關部落格,有疏漏之處,歡迎指正。
思路:以空間換時間的方法
#include<stdio.h>
#define MAXSIZE 256
typedef struct minStackElement
{
int value;
int min;
}MinStackElement;
typedef struct minStack
{
MinStackElement data[MAXSIZE];//本來棧中只有一個元素,現在擴充套件成結構體,用來存放min
int top;
}MinStack;
int Init(MinStack *p)
{
int i;
for(i=0; i<MAXSIZE; i++)
{
p->data[i].value=0;
p->data[i].min=0;
}
p->top = 0;
return 0;
}
int Push(MinStack *p, int d)
{
if(p->top == MAXSIZE)
{
printf("stack full");
return -1;
}
p->data[p->top].value = d;
p->data[p->top].min = (p->top == 0 ? d : p->data[p->top-1].min);
if(p->data[p->top].min > d)
p->data[p->top].min = d;
p->top++;
return 0;
}
int Pop(MinStack *p)
{
if(p->top == 0)
{
printf("empty");
return -1;
}
return p->data[p->top--].value;
}
int getMin(MinStack *p)
{
if(p->top == 0)
{
printf("empty");
return -1;
}
return p->data[p->top-1].min;
}
int main()
{
int min;
MinStack ms;
MinStack *p = &ms;
Init(p);
Push(p,11);
Push(p,2);
Push(p,35);
Push(p,46);
Push(p,77);
Push(p,56);
Push(p,175);
Push(p,1);
min = getMin(p);
printf("min=%d\n",min);
}
相關文章
- 設計包含min函式的棧函式
- 時間複雜度O(n)和空間複雜度時間複雜度
- 時間複雜度O(1)、O(n)、O(n²)、O(nlogn)的含義時間複雜度
- JZ-020-包含 min 函式的棧函式
- 劍指offer——包含min函式的棧函式
- 時間複雜度為 O(nlogn) 的排序演算法時間複雜度排序演算法
- 時間複雜度為O(nlogn)的排序演算法時間複雜度排序演算法
- 演算法題:O(1)時間複雜度實現獲取棧的最大值、最小值演算法時間複雜度
- 時間複雜度為 O(n^2) 的排序演算法時間複雜度排序演算法
- 時間複雜度為 O (n^2) 的排序演算法時間複雜度排序演算法
- 【劍指offer】13.包含min函式的棧函式
- 演算法的時間複雜度演算法時間複雜度
- PHP陣列函式的時間複雜度清單PHP陣列函式時間複雜度
- 包含min函式的棧(劍指offer)---C語言函式C語言
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 122 演算法的時間複雜度和空間複雜度詳解演算法時間複雜度
- Java實現:排序演算法--時間複雜度為O(n² )Java排序演算法時間複雜度
- 時間複雜度的計算時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 時間複雜度跟空間複雜度時間複雜度
- 力扣 - 劍指 Offer 30. 包含min函式的棧力扣函式
- 說說你對演算法中時間複雜度,空間複雜度的理解?如何計算?演算法時間複雜度
- 卷演算法——時間複雜度演算法時間複雜度
- 演算法(一)時間複雜度演算法時間複雜度
- 演算法分析__時間複雜度演算法時間複雜度
- 解惑3:時間頻度,演算法時間複雜度演算法時間複雜度
- 快速排序平均時間複雜度O(nlogn)的推導排序時間複雜度
- 一文講透演算法中的時間複雜度和空間複雜度計算方式演算法時間複雜度
- 遞迴演算法的時間複雜度遞迴演算法時間複雜度
- PHP 演算法基礎----時間複雜度和空間複雜度(轉載)PHP演算法時間複雜度
- Leetcode 234. 迴文連結串列 快慢指標+連結串列逆序實現O(n)時間複雜度且O(1)空間複雜度LeetCode指標時間複雜度
- 1. 時間複雜度和空間複雜度 (7 天掌握演算法面試必考知識點)時間複雜度演算法面試
- 演算法與資料結構--空間複雜度O(1)遍歷樹演算法資料結構複雜度
- [每日一題] 第二十七題:包含min函式的棧每日一題函式
- 【基礎】演算法的時間複雜度分析演算法時間複雜度
- 判斷連結串列是否為迴文結構,空間負責度為O(1),時間複雜度為O(n)時間複雜度
- 演算法的空間複雜度演算法複雜度
- 我們常說的演算法時間複雜度和空間複雜度到底是什麼?演算法時間複雜度