zoukankan      html  css  js  c++  java
  • Min Stack [LeetCode 155]

    1- 问题描述

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • getMin() -- Retrieve the minimum element in the stack

    2- 思路分析

      使用两个栈,一个栈保存原始数据(stack),另一个栈保持每个元素对应的最小元素(minStack)。如stack中从栈底到栈顶为[3, 1, 5, 7, 0],那么minStack中从栈底到栈顶为[3, 1, 1, 1, 0]。可参考[LeetCode] Min Stack in Python


    3- Python实现

     1 # -*- coding: utf-8 -*-
     2 # Min Stack
     3 
     4 class MinStack:
     5     def __init__(self):
     6         self.stack = []
     7         self.min = []    # 保存最小值
     8 
     9     # @param x, an integer
    10     # @return an integer
    11     def push(self, x):    # 入栈
    12         self.stack.append(x)
    13         if not self.min:   # 如果min栈为空则直接入栈
    14             self.min.append(x)
    15             return x
    16         if x < self.min[-1]:  # 如果入栈元素x比min栈顶小,则x入栈
    17             self.min.append(x)
    18         else:  # 如果x比min栈顶大,则重复栈顶元素
    19             self.min.append(self.min[-1])
    20         return x
    21 
    22     # @return nothing
    23     def pop(self):    #出栈
    24         self.stack.pop()
    25         self.min.pop()  # min栈同步
    26 
    27     # @return an integer
    28     def top(self):    #栈顶
    29         return self.stack[-1]
    30 
    31     # @return an integer
    32     def getMin(self):    #栈内最小值
    33         return self.min[-1]
  • 相关阅读:
    js炫酷效果
    程序员的执着
    [心得]docker学习笔记
    [心得笔记]多线程之间的内存可见性问题
    Docker入门
    [心得体会]jvm
    redis学习总结
    [心得]redis集群环境搭建的错误
    Linux安装mysql5.7版本
    Cent OS下安装JDK11
  • 原文地址:https://www.cnblogs.com/freyr/p/4499906.html
Copyright © 2011-2022 走看看