設計包含min函式的棧

2021-06-28 17:35:18 字數 1044 閱讀 3910

題目:

定義棧的資料結構,要求新增乙個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的面試題.先來說個常規解和他的乙個優化,常規解的時間複雜度符合要求,但需要線性的額外空間.常規解 參考 除了題目要求的棧之外新開乙個棧,用來記...