题解 | #包含min函数的栈#

包含min函数的栈

https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack = []
        self.stack_min = []
    def push(self, node):
        if len(self.stack) >= 300:
            print("Your stack is full!")
        elif abs(node) > 10000:
            print("Node is out of value")
        else:
            self.stack.append(node)
            if len(self.stack_min) == 0:
                self.stack_min.append(node)
            elif node < self.stack_min[-1]:
                self.stack_min.append(node)
            else:
                self.stack_min.append(self.stack_min[-1])
    def pop(self):
        if len(self.stack) == 0:
            print("Your stack is empty!")
            return None
        self.stack.pop(-1)
        self.stack_min.pop(-1)
    def top(self):
        if len(self.stack) == 0:
            print("Your stack is empty!")
            return None
        return self.stack[-1]
    def min(self):
        if len(self.stack) == 0:
            print("Your stack is empty!")
            return None
        return self.stack_min[-1]

创建2个栈,同时增同时减,push时,stack正常装入,但stack_min的栈顶元素需要和新装入的元素比较,谁小装入谁。弹出时2个栈一起弹出。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务