實現最小棧

2021-10-05 20:30:03 字數 535 閱讀 5024

實現乙個這樣的棧,這個棧除了可以進行普通的push、pop操作以外,還可以進行getmin的操作,getmin方法被呼叫後,會返回當前棧的最小值。棧裡面存放的都是 int 整數,並且數值的範圍是 [-100000, 100000]。要求所有操作的時間複雜度是 o(1),空間複雜度也能o(1)的話可加分。

class minstack

~minstack(){}

void push(int x)

else

}void pop()

int getmin()

private:

stackm_stack;

int m_nmin;

};

輔助棧m_stack儲存的是(待push元素-最小值)

當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...