劍指 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 ...