劍指offer面試題30. 包含min函數的棧(輔助棧)

題目描述

定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的 min 函數在該棧中,調用 min、push 及 pop 的時間複雜度都是 O(1)。
在這裏插入圖片描述

思路

詳見鏈接

代碼

class MinStack:
	def __init__(self):
		self.A, self.B = [], []
	def push(self, x:int)->None:
		self.A.append(x)
		if not self.B and self.B[-1] >= x:
			self.B.append(x)
	def pop(self)->None:
		if self.A.pop() == self.B[-1]:
			self.B.pop()
	def top(self)->int:
		return self.A[-1]
	def min(self)->int:
		return self.B[-1]

複雜度

時間複雜度 O(1) : push(), pop(), top(), min() 四個函數的時間複雜度均爲常數級別。
空間複雜度 O(N): 當共有 N個待入棧元素時,輔助棧 BB 最差情況下存儲 N 個元素,使用 O(N) 額外空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章