LintCode練習 12 帶最小值操作的棧

2021-08-12 00:14:45 字數 809 閱讀 4292

題目描述:

實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。

你實現的棧將支援push,pop 和 min 操作,所有操作要求都在o(1)時間內完成。

樣例如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 2,1

思路:

使用兩個列表mdata和mmindata,分別儲存棧的元素和最小值:

// mdata模擬乙個棧

private

list

<

integer

> mdata;

// mmindata用來儲存最小的值,並且當前最小的值是最後乙個元素

private

list

<

integer

> mmindata;

核心**:

即push方法。在第一次的時候,將第乙個元素直接新增到mmindata中。之後,判斷number與當前最小值的大小,將較小值新增到mmindata中。這樣的話,mmindata與mdata的長度相等,並且,當前的最小值,都儲存在最後乙個位置。

/*

* @param number: an integer

* @return: nothing

*/public

void

push(int number) else

}

完整**

LintCode 12 帶最小值操作的棧

實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。你實現的棧將支援push,pop 和 min 操作,所有操作要求都在o 1 時間內完成。注意事項 如果堆疊中沒有數字則不能進行min方法的呼叫如下操作 push 1 pop push 2 push 3 min push 1 min...

Lintcode 12 帶最小值操作的棧

中文english 實現乙個棧,支援以下操作 要求 o 1 開銷.樣例 2 輸入 push 1 min push 2 min push 3 min 輸出 1 1 1保證棧中沒有數字時不會呼叫min 借助最小輔助棧,每次呼叫min方法,返回最小輔助棧的棧頂元素 public class minstac...

lintcode 12 帶最小值操作的棧

class minstack param number an integer return nothing void push int number else num.push number return an integer int pop else return an integer int m...