剑指offer-定义栈实现栈最小元素的min函数

来源:互联网 发布:辐射4 斯嘉丽数据 编辑:程序博客网 时间:2024/05/23 01:18

转载源地址:
https://www.nowcoder.com/questionTerminal/4c776177d2c04c2494f2555c9fcc1e49
来源:牛客网

==解法1

# -*- coding:utf-8 -*-class Solution:    def __init__(self):        self.stack = []        self.assist = []    def push(self, node):        min = self.min()        if not min or node < min:            self.assist.append(node)        else:            self.assist.append(min)        self.stack.append(node)    def pop(self):        if self.stack:            self.assist.pop()            return self.stack.pop()    def top(self):        # write code here        if self.stack:            return self.stack[-1]    def min(self):        # write code here        if self.assist:            return self.assist[-1]

这个Yannyezixin 应该是解释的比较好的一个了,解释如下:
Yannyezixin:
思路:利用一个辅助栈来存放最小值

栈  3,4,2,5,1辅助栈 3,3,2,2,1

每入栈一次,就与辅助栈顶比较大小,如果小就入栈,如果大就入栈当前的辅助栈顶
当出栈时,辅助栈也要出栈
这种做法可以保证辅助栈顶一定都当前栈的最小值

==解法2
这个是,牛客网华科平凡回答的,用的python列表函数来操作的,很简单。

# -*- coding:utf-8 -*-class Solution:    def __init__(self):        self.arr=[]    def push(self, node):        self.arr.append(node)    def pop(self):        return self.arr.pop()    def top(self):        return self.arr[-1]    def min(self):        return min(self.arr)
阅读全文
0 0
原创粉丝点击