题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
# -*- coding:utf-8 -*-
# """
# method_1: 一种可以接受的方法
# """
# class Solution:
# def __init__(self):
# self.stack1 = list()
# def push(self, node):
# # write code here
# # print("node: ", node)
# self.stack1.append(node)
# print("after append: ", self.stack1)
# pass
# def pop(self):
# # write code here
# if len(self.stack1) == None:
# return -1
# rst = self.stack1.pop()
# print("pop result: ", rst)
# pass
# def top(self):
# # write code here
# if len(self.stack1) == None:
# return -1
# rst = self.stack1[-1]
# print("top: ", rst)
# return rst
# pass
# def min(self):
# # write code here
# max_val = 0
# min_val = self.stack1[0]
# for i in range(len(self.stack1)):
# tmp = self.stack1[i]
# if max_val < tmp:
# max_val = tmp
# elif min_val >= tmp:
# min_val = tmp
# print("min val: ", min_val)
# return min_val
# pass
"""
method_2: office method
"""
class Solution:
def __init__(self):
self.stack1 = list()
self.stack2 = list()
def push(self, node):
self.stack1.append(node)
# 空或新元素较小,则入stack2
if len(self.stack2) == 0 or self.stack2[-1] > node:
self.stack2.append(node)
else:
self.stack2.append(self.stack2[-1])
pass
def pop(self):
self.stack1.pop()
self.stack2.pop()
pass
def top(self):
return self.stack1[-1]
pass
def min(self):
return self.stack2[-1]
pass
提供两种方法,method1 是自己想出来的思路和解决办法; method2 是官方推荐思路和办法,该题解决思路和上一题类似。
