zoukankan      html  css  js  c++  java
  • 最小元素的栈

    设计一个支持 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.


    class MinStack(object):

    def __init__(self):
    """
    initialize your data structure here.
    """

    def push(self, x):
    """
    :type x: int
    :rtype: void
    """

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

    def top(self):
    """
    :rtype: int
    """

    def getMin(self):
    """
    :rtype: int
    """


    # Your MinStack object will be instantiated and called as such:
    # obj = MinStack()
    # obj.push(x)
    # obj.pop()
    # param_3 = obj.top()
    # param_4 = obj.getMin()

    解答:

    class MinStack(object):
    def __init__(self):
    self.lst = []
    self.minlst =[]#最小栈元素定义一个0
    def push(self, x):
    self.lst.append(x)
    if len(self.minlst) < 1:
    self.minlst.append(x)
    if x <= self.minlst[-1] :#压栈元素与当前栈顶元素作对比,小则入栈
    self.minlst.append(x)
    return True

    def pop(self):
    if not self.isEmpty():
    if self.top() == self.minlst[-1]:
    self.minlst.pop()
    return self.lst.pop()
    #获取栈顶元素
    def top(self):
    return self.lst[-1]
    #获取当前栈中最小元素
    def getMin(self):
    if not self.isEmpty():
    return self.minlst[-1]
    #打印
    def print(self):
    print(self.lst)
    def clear(self):
    del(self.lst)
    def isEmpty(self):
    return len(self.lst) < 1

    stack = MinStack();
    stack.push(-2);
    stack.push(0);
    stack.push(-3);
    stack.push(5);
    stack.push(8);
    print("入栈的数为:")
    stack.print()
    print("返回当前栈的最小元素为:")
    print(stack.getMin())
    print("出栈的数为:")
    print(stack.pop())
    print("返回前栈顶元素为:")
    print(stack.top())
    print("清空栈中元素")
    stack.clear()
  • 相关阅读:
    Maven项目的pom.xml中可以继承的属性
    LDAP常用属性及其描述
    Spring Boot 2 启动时加载properties文件
    Maven的阿里云镜像
    Windows下Node.js的安装与配置
    Windwos下Tomcat的安装与配置
    Windows下Java开发环境安装与配置
    Mysql踩过的坑
    数据库密码加密
    java集合遍历删除指定元素异常分析总结
  • 原文地址:https://www.cnblogs.com/zbligang/p/10413993.html
Copyright © 2011-2022 走看看