题解 | #包含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到最小栈中。
这样,最小栈的大小将与主栈保持一致,并且最小栈的栈顶始终是当前主栈中的最小元素。
