题目要求:定义栈的数据结构,添加min()、max()函数(动态获取当前状态栈中的最小元素、最大元素),要求push()、pop()、min()、max()的时间复杂度都是O(1)。
思路解析:根据栈的后进先出特性,增加辅助栈,来存储当前状态下数据栈中的最小、最大元素。
代码:(python实现)
#coding=utf-8
class Stack(object):
def __init__(self):
self.data = []
self.minValue = []
self.maxValue = []
def push(self, data):
self.data.append(data)
if len(self.minValue) == 0:
self.minValue.append(data)
else:
if data <= self.minValue[-1]:
self.minValue.append(data)
if len(self.maxValue) == 0:
self.maxValue.append(data)