题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
题目地址
思路
使用两个栈,一个为数据栈,一个为辅助栈。数据栈用于存储所有数据,辅助栈用于存储最小值。
举个例子:
入栈时:首先往空的数字栈里压入数字3,显然现在3是最小值,我们也把最小值压入辅助栈。接下来压入数字4,由于4大于之前的最小值,因此我们只要入数据栈,不压入辅助栈。
出栈时:当数据栈和辅助栈相同,辅助栈和数据栈的栈顶元素都要出栈,否则,仅数据栈的栈顶元素出栈。
获取栈顶元素时:直接返回数据栈的栈顶元素
栈最小元素:直接返回辅助栈的栈顶元素
Python
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.dataStack = [] self.minStack = [] def push(self, node): # write code here self.dataStack.append(node) if len(self.minStack) <= 0 or node < self.minStack[-1]: self.minStack.append(node) def pop(self): # write code here val = self.dataStack.pop() if val == self.minStack[-1]: self.minStack.pop() return val def top(self): # write code here return self.dataStack[-1] def min(self): # write code here return self.minStack[-1] if __name__ == ‘__main__‘: result = Solution() result.push(2) result.push(4) result.push(1) result.push(3) result.pop() result.top() result.min()
原文地址:https://www.cnblogs.com/huangqiancun/p/9784325.html
时间: 2024-10-09 03:47:21