设计包含min函数的栈

设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。

栈中元素设两个域,一个记录元素的值,一个记录栈的最小值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Stack(object):
    def __init__(self):
        self.list=[]
        self.top=-1
    def push(self,x):
        if self.top>=0:
            if x<self.list[-1][1]:
                self.list.append((x,x))
            else:
                self.list.append((x,self.list[-1][1]))
        else:
            self.list.append((x,x))
        self.top+=1
    def pop(self):
        if self.top>=0:
            self.top-=1
            return self.list.pop()[0]
        else:
            raise IndexError,'pop from empty stack'
    def min(self):
        if self.top>=0:
            return self.list[self.top][1]
        else:
            raise IndexError,'stack is empty'

  

posted @   再见紫罗兰  阅读(720)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示