最小棧與最大佇列

2021-10-13 10:39:00 字數 876 閱讀 9783

劍指 offer 30. 包含min函式的棧

題意:定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min、push 及 pop 的時間複雜度都是 o(1)。

要求:得到最小值元素的min時間複雜度要求為o(1)

思想:利用額外的棧來記錄當前的最小值,如果當前push的元素比當前helper棧中的元素小或等於將其push到helper棧中(注意對於等於的處理,因為要在出棧的時候做出棧使用)

實現:

class minstack 

void push(int x)

}void pop()

int top()

int min()

};

劍指 offer 59 - ii. 佇列的最大值

題意:請定義乙個佇列並實現函式 max_value 得到佇列裡的最大值,要求函式max_value、push_back 和 pop_front 的均攤時間複雜度都是o(1)。

若隊列為空,pop_front 和 max_value 需要返回 -1

要求:max_value、push_back 和 pop_front 的均攤時間複雜度都是o(1)

思想:利用額外的雙端佇列來管理最大值

實現:

class maxqueue 

int max_value()

void push_back(int value)

_deque.push_back(value);

_queue.push(value);

}int pop_front()

_queue.pop();

return value;

}};

部落格230 資料結構 最大佇列

內容 實現乙個佇列,使得這個佇列能夠在o 1 時間內得到裡面最大元素 思路 1 這時候使用兩個佇列來配合實現,乙個儲存資料,以實現普通佇列的功能 2 另乙個佇列作為輔助,每次壓入時,往資料佇列正常入隊,但是輔助佇列要入隊時都將比他小的出隊,這樣就能保住輔助佇列的隊頭一定是最大的元素 include ...

棧和佇列 最小棧

題目要求 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.pus...

棧與佇列 建立棧 佇列

陣列棧 完成stack createstack int maxelements 函式,該函式建立乙個棧,maxelements為與分配的棧空間大小 棧可用空間為array 0,maxelements 1 typedef int elemtype struct stackrecord typedef ...