题解 | #包含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个栈一起弹出。
查看7道真题和解析