包含min函式的棧(js陣列模擬實現)

2021-10-09 23:09:58 字數 2070 閱讀 8847

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

模板:

/**

* initialize your data structure here.

*/var

minstack

=function()

;/**

* @param x

* @return

*/minstack.prototype.

push

=function

(x);

/** * @return

*/minstack.prototype.

pop=

function()

;/**

* @return

*/minstack.prototype.

top=

function()

;/**

* @return

*/minstack.prototype.

min=

function()

;/**

* your minstack object will be instantiated and called as such:

* var obj = new minstack()

* obj.push(x)

* obj.pop()

* var param_3 = obj.top()

* var param_4 = obj.min()

*/

解題思路:這道題要求的時間複雜度較小,我們可以考慮用空間換時間,建立乙個輔助棧

只需讓輔助棧中元素保持非嚴格降序,即可實現min()函式的o(1)複雜度。

函式設計:

複雜度分析:

**實現:

/**

* initialize your data structure here.

*/var

minstack

=function()

;/**

* @param x

* @return

*/minstack.prototype.

push

=function

(x)else}}

;/**

* @return

*/minstack.prototype.

pop=

function()

};/** * @return

*/minstack.prototype.

top=

function()

;/**

* @return

*/minstack.prototype.

min=

function()

;/**

* your minstack object will be instantiated and called as such:

* var obj = new minstack()

* obj.push(x)

* obj.pop()

* var param_3 = obj.top()

* var param_4 = obj.min()

*/

不必擔心那些沒有壓入輔助棧的元素會作為資料棧最小值需要被輸出的情況

因為輔助棧用於儲存資料棧中所有非嚴格降序的元素,也就是說資料棧刪除的棧頂元素只要不等於輔助棧的棧頂元素,則這個元素之下(棧頂到棧底)肯定有比它更小的元素,故這個元素在被刪除之前不會作為資料棧的最小元素輸出

js 包含min函式的棧 包含min函式的棧

目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...

包含min函式的棧 js

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 第一種 js陣列的一些方法 第二種 當node stack2的最後乙個值時,才push進來,那麼pop的時候就需要驗證stack1 pop出來的那個值是否等於stack2的最後乙個值 也就是最小值 pu...

包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 n代表將要輸入的操作的步驟數。接下來有n行,每行開始有乙個字母ci。ci s 時,接下有乙個數字k,代...