美文网首页
Python LeetCode-155. 最小栈(难度-简单)(

Python LeetCode-155. 最小栈(难度-简单)(

作者: Jayce_xi | 来源:发表于2019-04-28 17:35 被阅读0次

1. 题目描述

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

  • push(x) -- 将元素 x 推入栈中。
  • pop() -- 删除栈顶的元素。
  • top() -- 获取栈顶元素。
  • getMin() -- 检索栈中的最小元素。

示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

2.思路

  • 首先想到是利用python中的列表来做,进栈用append,出站用pop,但是这里还有一个小要求是要能检索到栈中的最小元素并且是在常数时间内。
  • 算法一般都是空间换时间或者时间换空间,要想得到最小元素并且是在常数时间内,在建栈的时候就保存这个索引就行了,详情见代码。

3.解决

class MinStack(object):

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.my_stack = []

    def push(self, x):
        """
        :type x: int
        :rtype: void
        """
        current_min = self.getMin()
        if not current_min or x < current_min:
            current_min = x
        self.my_stack.append((x, current_min))  # 关键点在这,这里相当于保存每个元素所对应最小值

    def pop(self):
        """
        :rtype: void
        """
        self.my_stack.pop()

    def top(self):
        """
        :rtype: int
        """
        return self.my_stack[-1][0]

    def getMin(self):
        """
        :rtype: int
        """
        if len(self.my_stack) == 0:
            return None
        else:
            return self.my_stack[-1][1]


相关文章

  • Python LeetCode-155. 最小栈(难度-简单)(

    1. 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x)...

  • 最小栈

    题目 难度级别:简单 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 pu...

  • LeetCode刷题笔记(三)栈与队列

    三. 栈与队列 python中的栈直接用list实现,队列用deque,需要导入外部包。 155. 最小栈 题目:...

  • 队列实现插入、弹出

    先来个简单的栈(先进后出) 题目:实现一个栈,带有出栈(pop),入栈(push),取最小元素(getMin)三个...

  • leetcode 155 python 最小栈

    传送门 题目要求 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x...

  • LeetCode-20 有效的括号

    题目:20. 有效的括号 难度:简单 分类:栈 解决方案:入栈出栈 今天我们学习第20题有效的括号,这是一道关于栈...

  • 2.栈(二)

    题目汇总:https://leetcode-cn.com/tag/stack/155. 最小栈简单[✔]173. ...

  • LeetCode 每日一题 [60] 包含min函数的栈

    LeetCode 包含min函数的栈 [简单] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 mi...

  • 2019-12-11 刷题-3(栈)

    155-最小栈 解法一:此题最简单的做法就是实现两个栈,一个记录当前元素,一个记录当前序列的最小元素。代码: 解法...

  • ARTS 第15周

    ARTS 第15周分享 [TOC] Algorithm 232. 用栈实现队列难度简单 [思路] 通过两个栈来逆向...

网友评论

      本文标题:Python LeetCode-155. 最小栈(难度-简单)(

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