美文网首页
21、包含min函数的栈

21、包含min函数的栈

作者: 小碧小琳 | 来源:发表于2018-10-02 20:57 被阅读0次

因此,想到构造一个辅助栈S_helper,每次往栈S中添加到一个元素时,辅助栈S_helper都会在栈顶添加一次当前S里最小的元素值。这样每次调用min时,只需要返回辅助栈的栈顶元素即可。 当然在删除S中的栈顶元素时,也会删除S_helper中的栈顶元素。

注意,要明确每次在辅助站中添加的元素是谁。
若新添加的元素小于辅助栈 的栈顶元素(也就是小于当前S中的最小元素),那么就在栈顶添加新的value。
如果新添加的value大于辅助栈的栈顶元素,那么就继续在辅助栈中添加辅助栈的栈顶元素即可。

代码实现:

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.S = []
        self.S_helper = []
    def push(self, node):
        self.S.append(node)
        #如果辅助站为空,或新来的node值大于辅助站的栈顶元素,
        # 那么就更新辅助站的栈顶元素为最小值
        if len(self.S_helper) == 0 or node < self.S_helper[-1]:
            self.S_helper.append(node)
        else:
            self.S_helper.append(self.S_helper[-1])
    def pop(self):
        res = self.S.pop()
        res_helper = self.S_helper.pop()
        return res
    def top(self):
        return self.S[-1]
    def min(self):
        return self.S_helper[-1]

相关文章

  • 剑指offer第六天

    面试题21 包含min函数的栈 实现一个能够得到栈的最小元素的min函数,在该栈中调用min,push,pop的时...

  • 21、包含min函数的栈

    因此,想到构造一个辅助栈S_helper,每次往栈S中添加到一个元素时,辅助栈S_helper都会在栈顶添加一次当...

  • 剑指offer学习笔记:4.3 举例让抽象问题具体化

    面试题21:包含min函数的栈定义一个数据结构,请在该类型中实现一个能够得到栈中最小元素的min函数。在该栈中,调...

  • 【栈】包含min函数的栈

  • 【34】包含min函数的stack

    【34】包含min函数的stack 题目: 实现一个包含min函数的栈,min和push,pop都是o(1)时间 ...

  • 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

  • 包含 min 函数的栈

    题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数。在该栈中,调用 min、pu...

  • 包含Min函数的栈

    时间 2018/10/14?环境:牛客的编译环境?语言:JavaScript☕️难点:这道题的难点在于不能直接用一...

  • 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 ...

  • 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 首先我们可...

网友评论

      本文标题:21、包含min函数的栈

      本文链接:https://www.haomeiwen.com/subject/pfyaoftx.html