棧 有getMin功能的棧O 1

2022-02-09 22:31:09 字數 906 閱讀 4603

題面

實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中的最小元素的操作。

要求

pop(), push(), getmin()時間複雜度都是o(1)

思路

1.準備兩個棧,資料棧+最小元素棧

2.壓入元素時,先壓入資料棧,然後與最小元素棧頂比較;若小,則壓入,若大,不做處理(1)/壓入當前棧頂(2)

(1)若不做處理,那麼需要在pop()彈出時,做判斷,若stackdata要彈出的元素與stackmin頂相等,那麼將stackmin頂也一併彈出

(2)若2中採用再次壓入stackmin頂元素,那麼在pop()函式中,就只要彈出兩個棧頂即可,邏輯較為簡單。

實現 (**未測試,注意!)

占用額外空間較小,但pop(),push()函式較為複雜

1

class

mystack_1 16}

17int

pop()

1827}28

intgetmin()

2932

inttop()

3336 };

占用額外空間較大,操作函式簡單。

1

class

mystack_2 18}

19int

pop()

2028}29

intgetmin()

3033

inttop()

3437 };

棧與佇列1 設計getMin功能的棧

設計棧,實現基本功能的前提下,實現返回棧內最小元素的功能 1.push,pop,getmin 複雜度為o 1 2.允許使用現成棧結構 使用兩個棧,stackdata和stackmin,stackmin負責存最小值 共同點 都用stackmin儲存stackdata的最小值,時間複雜度均為o 1 空間...

實現GetMin功能的棧

題目 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的棧。要求 1 pop push getmin操作的時間複雜度都為o 1 2 設計的站型別可以使用現成的棧結構 棧的一些基本定義模板 標頭檔案 include 模板 型別名 template struct specstack ...

設計getMin功能的棧

題目描述 實現乙個特殊功能的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作。輸入描述 第一行輸入乙個整數n,表示對棧進行的操作總數。下面n行每行輸入乙個字串s,表示操作的種類。如果s為 push 則後面還有乙個整數x表示向棧裡壓入整數x。如果s為 pop 則表示彈出棧頂操作。如果s為 ...