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

2021-10-01 18:19:13 字數 751 閱讀 4154

設計棧,實現基本功能的前提下,實現返回棧內最小元素的功能

1.push,pop,getmin()複雜度為o(1)

2.允許使用現成棧結構

使用兩個棧,stackdata和stackmin,stackmin負責存最小值

共同點:都用stackmin儲存stackdata的最小值,時間複雜度均為o(1),空間複雜度均為o(n)

不同點:法一中,push稍省空間,pop時稍費時間;法二中,push稍費空間,pop稍省時間

法一:

public class mystack1

public void push(int newnum)else if(newnum<=this.getmin())

this.stackdata.push(newnum);

} public int pop()

if(this.stackdata.pop()==this.getmin())

return this.stackdata.pop();

} public int getmin()

return this.stackmin.peek();

}}

法二:

public class mystack2

public void push(int newnum)else if(newnum

設計getMin功能的棧

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

棧 有getMin功能的棧O 1

題面 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中的最小元素的操作。要求 pop push getmin 時間複雜度都是o 1 思路 1.準備兩個棧,資料棧 最小元素棧 2.壓入元素時,先壓入資料棧,然後與最小元素棧頂比較 若小,則壓入,若大,不做處理 1 壓入當前棧頂 2 1 若不...

實現GetMin功能的棧

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