題目:
定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。
要求函式min、push以及pop的時間複雜度都是o(1)。
**:
#include #include #define max_len_stack 10
typedef struct
stack;
/*輔助棧空間,儲存最小值*/
stack minstack = ;
/*初始化棧*/
int initstack(stack* s)
s->top = -1;
minstack.top = -1;
}/*獲取棧頂元素*/
int top(stack* s)
return s->stacklist[s->top];
}/*將元素新增到棧裡面*/
int push(stack* s, int data)
s->stacklist[++(s->top)] = data;
/*先修改輔助棧,如果比當前輔助棧的值小,則更新為當前棧,如果比當前大,還用之前的最小值*/
if (minstack.top < 0)
else
else
}return 0;
}/*出棧*/
int pop(stack* s)
minstack.top--;
return s->stacklist[s->top--];
}/*獲取當前棧的最小值*/
int min(stack* s)
return s->stacklist[minstack.stacklist[minstack.top]];
}/*判斷當前棧是否為空*/
bool empty(stack* s)
int main()
; int i;
initstack(&s);
for (i=0; i<7; i++)
while (!empty(&s))
return 0;
}
設計包含min函式的棧
本文 題目 定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 分析 這是去年google的一道面試題。我看到這道題目時,第一反應就是每次push乙個新元素時,將棧裡所有逆序元素排序。這樣棧頂元素將是最小元素。但由於不能保證最後p...
設計包含min函式的棧
定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素,要求函式min,push及pop的時間複雜度都是o 1 棧的資料結構包含兩個普通棧,乙個棧存資料,另乙個棧存最小值 或最小值的位置,如果用stl裡的棧,則不能存最小值的位置,因為stl裡的stack不支援下標索引訪問 cpp view ...
設計包含min函式的棧
題目 定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 注 這是06年一道google的面試題.先來說個常規解和他的乙個優化,常規解的時間複雜度符合要求,但需要線性的額外空間.常規解 參考 除了題目要求的棧之外新開乙個棧,用來記...