剑指 Offer 30. 包含min函数的栈 (python实现)
剑指 Offer 30. 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.
提示:
各函数的调用总次数不超过 20000 次
class MinStack:def __init__(self):"""initialize your data structure here."""self.stack = [] #数据栈self.min_stack = [] #辅助栈def push(self, x: int) -> None:self.stack.append(x)if self.min_stack == []:self.min_stack.append(x)else:# 比较栈中元素self.min_stack.append(min(x,self.min_stack[-1])) #弹出栈顶def pop(self) -> None:self.stack.pop(-1)self.min_stack.pop(-1)def top(self) -> int:return self.stack[-1]def min(self) -> int:return self.min_stack[-1]# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.min()
思路
使用一个辅助栈min_stack,用来维护栈的最小的元素
每次添加元素入栈时候,data_stack和min_stack都要同时维护
data_stack按照正常的栈压入和弹出顺序,但是min_stack栈不一样,因为要能获取当前栈的最小元素:
如果栈是空的,直接入栈;
如果栈不是空的,比较栈中元素,取最小压入栈中。
剑指 Offer 30. 包含min函数的栈 (python实现)相关推荐
- 剑指Offer 30.包含 min 函数的栈(Python)
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.top.push 及 pop 的时间复杂度都是 O(1). # 例子: MinStack minSta ...
- 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java
<LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...
- 【LeetCode】剑指 Offer 30. 包含min函数的栈
[LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...
- Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈
Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈 大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术 ...
- 【简洁写法】剑指 Offer 30. 包含min函数的栈
立志用最少的代码做最高效的表达 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinSt ...
- 剑指offer——30.包含min函数的栈
题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 知识点: 这种需要持续输出最小或最大的数的解决办法之一:引入辅助栈 注意: 无 代码实现 ...
- 剑指offer:包含min函数的栈 python实现
题目 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 解题思路 暴力做法: 遍历一遍,找最小的数,然后返回. # -*- coding ...
- 【算法】剑指 Offer 30. 包含min函数的栈
文章目录 1.概述 2.分析 3. 链表法 4. 双栈法 1.概述 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/bao-han-minhan ...
- 剑指 Offer 30. 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinStack minStack = n ...
最新文章
- 巧用gh-pages分支发布自己的静态项目
- python基础===Python 代码优化常见技巧
- Android Vector笔记
- 【移动战略说·第十六期】创业者面临的机遇与挑战(杭州站)
- 幸福指数测试软件,测试你和ta的幸福指数能不能爆表
- DotText使用非80端口(默认端口)时URL出错
- Linux开启和关闭防火墙的方法
- Linux 命令(97)—— info 命令
- 第12章类和动态内存分配
- 语义模型及自然语言处理系统基础算法
- SQL 获取当前日期上一个月的日期
- Android关于对话框,Android对话框(Dialog)完全使用手册
- 基于SSM生产计划排程管理系统
- 比尔·盖茨的另一扇视窗
- 克服神经网络中的灾难性遗忘(EWC):Overcoming catastrophic forgetting inneural networks
- Java基础冒泡排序——高低输出十个学生的成绩
- 查看服务器内存型号及主频
- DoTween插件的基本操作总结
- F81E657Se-SL
- AVAssetWriter 输出视频文件在ios8上的结束