20.包含min函式的棧-劍指offer-Python2.7
阿新 • • 發佈:2018-12-21
題目描述 定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))。
思路 引入兩個棧stack和minStack,對於棧stack,每次壓棧實際的數字。對於棧minStack,如果壓棧的數字小於minStack棧頂的數字,則壓棧新的數字,反之,把棧頂的數字再壓入一遍。
Python2.7編寫
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack = [] #定義一個空棧,用來正常存放壓棧資料 self.minStack = [] #用來存放最小值 def push(self, node): #正常壓入棧 self.stack.append(node) #如果存放最小值的棧為空或者當前壓棧數值小於棧中最小值,則壓入儲存最小值的棧中 if not self.minStack or node < self.min(): self.minStack.append(node) else: #否則,將棧中的最小值再壓入棧一遍,這麼做是為了保證兩個棧中數的個數相同。方便進行出棧操作。 self.minStack.append(self.min()) def pop(self): if not self.stack: return None self.stack.pop() self.minStack.pop() def top(self): return self.stack[-1] def min(self): return self.minStack[-1]