栈和队列---设计一个有getMin功能的栈

来源:互联网 发布:效果图设计软件 编辑:程序博客网 时间:2024/05/19 05:03

【题目】

  实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

【要求】

  1、 pop、push、getMin操作的时间复杂度都是O(1)。
  2.、设计的栈类型可以使用现成的栈结构

【代码实现】

#python3.5class NewStack1:    def __init__(self):        self.stackData = []        self.stackMin = []    def push(self, newNum):        self.stackData.append(newNum)        if len(self.stackMin) == 0 or newNum <= self.getMin():            self.stackMin.append(newNum)    def pop(self):        if len(self.stackData) == 0:            raise Exception("stack is empty!")        value = self.stackData.pop()        if self.getMin() == value:            self.stackMin.pop()        return value    def getMin(self):        if len(self.stackMin) == 0:            raise Exception("stack is empty!")        return self.stackMin[-1]
class NewStack2:    def __init__(self):        self.stackData = []        self.stackMin = []    def push(self, newNum):        self.stackData.append(newNum)        if len(self.stackMin) == 0 or newNum < self.getMin():            self.stackMin.append(newNum)        else:            self.stackMin.append(self.getMin())    def pop(self):        if len(self.stackData) == 0:            raise Exception("Stack is empty!")        self.stackMin.pop()        return self.stackData.pop()    def getMin(self):        if len(self.stackMin) == 0:            raise Exception("Stack is empty!")        return self.stackMin[-1]
原创粉丝点击