實現乙個這樣的棧,這個棧除了可以進行普通的push、pop操作以外,還可以進行getmin的操作,getmin方法被呼叫後,會返回當前棧的最小值。棧裡面存放的都是 int 整數,並且數值的範圍是 [-100000, 100000]。要求所有操作的時間複雜度是 o(1),空間複雜度也能o(1)的話可加分。
輔助棧m_stack儲存的是(待push元素-最小值)class minstack
~minstack(){}
void push(int x)
else
}void pop()
int getmin()
private:
stackm_stack;
int m_nmin;
};
當push元素時,若該值小於0,則說明待push元素是最小值,更新最小值;否則不用更新最小值;
當要pop元素時,若輔助棧m_stack棧頂元素是大於0,說明待pop元素不是最小元素,最小值不需更新;否則最小值需更新,即最小值-m_stack棧頂元素。
最小棧實現
最小棧實現 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。public class minstack public void push int x ...
實現最小棧
class minstack stack stack new stack stack minstack new stack int stack new int 40 int i 0 int minstack new int 40 int j 0 入棧 對兩個棧都要入棧 每次放入之前需要看最小棧 的棧...
實現最小棧
題目描述 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧 push x 將元素 x 推入棧中 pop 刪除棧頂的元素 top 獲取棧頂元素 getmin 檢索棧中的最小元素 示例1 minstack minstack new minstack minstack.pu...