劍指offer 面試題22 包含min函式的棧

2021-09-20 03:10:37 字數 418 閱讀 5937

劍指offer:面試題22——包含min函式的棧

題目:定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。

思路:使用兩個棧,乙個存放資料,另乙個存放當前的最小值,但是如果最小值被彈出,還需要儲存次小值,因此最小值棧的設計應該為:如果當前最小值棧為空,直接入棧;如果入棧資料小於當前最小值棧頂,直接入棧;如果當前元素大於最小值棧頂,則直接入棧當前最小值棧頂(即為當前最小值)

這樣做的目的使得資料棧中每個元素在入棧時,當前棧中最小值得以儲存

**如下:

class solution 

}void

pop(

)int

top(

)int

min()}

;

劍指offer 面試題21 包含min函式的棧

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小最小元素的min函式。在該棧中,呼叫min push 及 pop的時間複雜度都是o 1 本題關鍵問題在於 o 1 時間複雜度的 min 函式。即無論佔中元素如何變化。都要在 o 1 內知道最小值。因此,需要設定兩個棧 1 資料棧,用於資料的...

劍指offer 面試題21 包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小素的min 函式。在該棧中,呼叫min push 及pop的時間複雜度都是0 1 題目分析 借助乙個輔助棧,當向棧中壓入元素時,跟輔助棧頂元素作比較,把最小的放到輔助棧中。每次都把最小元素放入輔助棧,這樣在彈出最小元素後,剩下的棧中棧頂...

劍指offer 面試題21 包含min函式的棧

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到得到棧的最小元素min函式。在該棧中,呼叫該push pop min的時間複雜度都是o 1 思路 棧自身的特徵 後進先出。如何滿足在o 1 的時間內但返回最小的元素?思路1 將棧排序,將最小的放到前面,每次呼叫min 的返回第乙個,不過這不符合棧的...