包含min函数的栈

Posted bernieloveslife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包含min函数的栈相关的知识,希望对你有一定的参考价值。

题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

解题思路:
使用一个辅助栈,当当前数字比辅助栈顶元素小的时候,当前元素进栈;否则将辅助栈的栈顶元素进栈。

python solution:

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack = []
        self.support = []
        
    def push(self, node):
        if len(self.stack)==0:
            self.stack.append(node)
            self.support.append(node)
        else:
            self.stack.append(node)
            if node<self.support[-1]:
                self.support.append(node)
            else:
                self.support.append(self.support[-1])
            
    def pop(self):
        self.support.pop(-1)
        return self.stack.pop(-1)
        
    def top(self):
        return self.stack[-1]
    
    def min(self):
        return self.support[-1]

以上是关于包含min函数的栈的主要内容,如果未能解决你的问题,请参考以下文章

包含min函数的栈

20.包含min函数的栈

Coding Interviews 20 包含min函数的栈

剑指offer(20)包含min函数的栈

剑指Offer30包含min函数的栈

剑指Offer30包含min函数的栈