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

包含min函数的栈

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

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack = []
        self.stack_min = []

    # 可能删除最小值,所以min都得保留
    def push(self, node):
        self.stack.append(node)
        if not self.stack_min:
            self.stack_min.append(node)
        else:
            self.stack_min.append(min(node, self.stack_min[-1]))
        print(f"Pushed: {node}, Stack: {self.stack}, Min Stack: {self.stack_min}")

    def pop(self):
        if self.stack:
            pop_val = self.stack.pop()
            self.stack_min.pop()
            print(f"Popped: {pop_val}, Stack: {self.stack}, Min Stack: {self.stack_min}")
        else:
            print("Stack is empty")

    def top(self):
        if self.stack:
            return self.stack[-1]

    def min(self):
        return self.stack_min[-1]

建立最小栈

始终将新元素和最小栈的当前最小值中的较小者push到最小栈中。

这样,最小栈的大小将与主栈保持一致,并且最小栈的栈顶始终是当前主栈中的最小元素。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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