剑指offer面试题30. 包含min函数的栈(辅助栈)
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
思路
详见链接
代码
class MinStack:def __init__(self):self.A, self.B = [], []def push(self, x:int)->None:self.A.append(x)if not self.B and self.B[-1] >= x:self.B.append(x)def pop(self)->None:if self.A.pop() == self.B[-1]:self.B.pop()def top(self)->int:return self.A[-1]def min(self)->int:return self.B[-1]
复杂度
时间复杂度 O(1) : push(), pop(), top(), min() 四个函数的时间复杂度均为常数级别。
空间复杂度 O(N): 当共有 N个待入栈元素时,辅助栈 BB 最差情况下存储 N 个元素,使用 O(N) 额外空间。
剑指offer面试题30. 包含min函数的栈(辅助栈)相关推荐
- 剑指offer面试题[21]包含min函数的栈
题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 分析: 看到这个问题,我们的第一反应可能是每次压入一个新元素进栈时,将栈里所有的元素排序,让最小的元位于栈顶,这样就能在 ...
- 剑指offer(20)包含min函数的栈
import java.util.Stack;public class Solution {//创建俩个辅助栈,stack1用来存放压入的元素,stack2用来保存较小元素Stack<Integ ...
- 剑指offer面试题[30]-最小的k个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 分析思路: 这道题最简单的思路莫过于把输入的n个数排 ...
- 剑指offer:面试题30. 包含min函数的栈
题目:包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). MinStack min ...
- 【剑指offer-Java版】21包含min函数的栈
包含min操作的栈:在基本栈基础上提供一个Min功能,可以取得当前栈的最小值 重点在于思路,拿空间换取了Min的功能,申请一个等量空间的辅助栈用于存取栈中的最小元素 public class _Q21 ...
- [剑指offer]面试题1:赋值运算符函数
面试题1:赋值运算符函数 题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString {public:CMyString(char *pData = nu ...
- 剑指Offer——面试题30:最小的K个数
题目:输入N个数字,找出其中最小的K个数. 思路:维护一个数组KMin,长度为K,存放最小的K个数.遍历原始数组的过程中,如果KMin不满,就直接在后边插入新的数字:如果KMin满了,就要找到其中最大 ...
- (剑指Offer)面试题1:赋值运算符函数
题目: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString{ public: CMyString(char* pData=NULL); ...
- 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)
文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...
最新文章
- 结构化方法与面向对象方法的比较
- 数学建模学习笔记——模糊综合评价模型(评价类,发放问卷一般不用)
- win10中微软账户中文名称修改后本地用户文件夹仍为中文名
- java读写注册表的两种方式,Preferences与jRegistry
- boot lib分离 spring_spring boot + gradle打包bootJar分离lib
- 浅析Thinkphp3.0的行为扩展模式
- jbpm 5 安装教程
- nc 发布元数据_智联科发布新一代连续式NC膜粘膜划膜一体机
- 统计月读(2019年5月)
- 为什么下拉框拉不下来_为什么分手后对方不删除拉黑你,但又不和你复合?
- (黑科技)超链接记录贴
- masscan端口扫描
- 贾俊平统计学思维导图- 第二章 数据搜集
- 如何更改Eclipse中Properties文件编码格式
- Android学习系列(33)--App应用之提交到各大市场渠道
- python入门之运算符的使用的答案_python基础课程 第2章 (运算符)
- hive表加载csv格式数据或者json格式数据
- 旧苹果短信导入新苹果手机上,iphone短信迁移
- ldo和dcdc功耗_LDO与DC-DC对比分析
- 赶紧收藏,都在用的四种标题写法
热门文章
- 判断PHP变量的类型
- 随笔 | 写代码时极有可能面临的焦虑
- Windows Terminal 窗口/控制台切换快捷键总结
- 清北大学计算机专业学习清单,好专业都在清北交复?快来看看这份院校清单,拥有着全国排名【NO.1】的专业...
- Qt部件学习之-烧鹅
- 2019年计算机学业水平测试填空题,2019年计算机学业水平模拟测试选择题80题Word(含参考答案)...
- 挑战程序设计竞赛(第2版) 第3章笔记
- 软件构架、架构和框架的区别
- Nagios_快速配置
- c语言中动态数组的实现