C#LeetCode刷题之#155-最小栈(Min Stack)
问题
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4020 访问。
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) -- 将元素 x 推入栈中。
pop() -- 删除栈顶的元素。
top() -- 获取栈顶元素。
getMin() -- 检索栈中的最小元素。
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) -- Push element x onto stack.
pop() -- Removes the element on top of the stack.
top() -- Get the top element.
getMin() -- Retrieve the minimum element in the stack.
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> Returns -3.
minStack.pop();
minStack.top(); --> Returns 0.
minStack.getMin(); --> Returns -2.
示例
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4020 访问。
public class Program {public static void Main(string[] args) {var minStack = new MinStack();minStack.Push(-2);minStack.Push(0);minStack.Push(-3);Console.WriteLine(minStack.GetMin());minStack.Pop();Console.WriteLine(minStack.Top());Console.WriteLine(minStack.GetMin());Console.ReadKey();}public class MinStack {private List<int> _list = null;private int _minValue = int.MaxValue;private void ComputerMinValue() {//题目要求,设计一个可以在常数时间内检索到最小元素的栈if(_list.Count() != 0) {_minValue = _list.Min();} else {_minValue = int.MaxValue;}}public MinStack() {_list = new List<int>();}public void Push(int x) {_list.Add(x);ComputerMinValue();}public void Pop() {_list.RemoveAt(_list.Count - 1);ComputerMinValue();}public int Top() {return _list[_list.Count - 1];}public int GetMin() {return _minValue;}}}
以上给出1种算法实现,以下是这个案例的输出结果:
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4020 访问。
-3
0
-2
分析:
显而易见,考虑到运行库的使用,Push 和 Pop 的时间复杂度应当为 ,其它方法的时间复杂度为: 。
C#LeetCode刷题之#155-最小栈(Min Stack)相关推荐
- LeetCode刷题记录——队列、栈
20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...
- 【leetcode刷题笔记】单调栈
典型例题:求左边第一个比当前元素小的数 (模板,弄懂) 代码: #include<iostream> using namespace std; #include<stack> ...
- leetcode的Hot100系列--155. 最小栈
栈:先入后出,后入先出 像电梯一样,先进入电梯的,走到电梯最深处,后进入电梯的,站在电梯门口, 所以电梯打开的时候,后进入的会先走出来,先进入的会后走出来. push,对应入电梯,把数据往里面压 po ...
- C#LeetCode刷题-栈
栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水 35.6% 困难 71 简化路 ...
- C#LeetCode刷题-设计
设计篇 # 题名 刷题 通过率 难度 146 LRU缓存机制 33.1% 困难 155 最小栈 C#LeetCode刷题之#155-最小栈(Min Stack) 44.9% 简单 173 二叉搜索树迭 ...
- Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)
** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...
- Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言)
** Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言) ** 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top( ...
- Leetcode刷题 232题:用栈实现队列(基于python3和c++两种语言)
Leetcode刷题 232题:用栈实现队列(基于python3和c++两种语言) 题目: 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部. pop() – 从队列首部移除元 ...
- Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言)
Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言) ** 题目: ** 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2 ...
最新文章
- 兼容IE8,滚动加载下一页
- JAVA基础实例(一)
- Java有趣的小功能_Java8 中有趣酷炫的小技巧你用到了那些
- 开发者如何写好技术简历?
- linux 文件读取 监控,linux 文件系统的监控
- 使用jsonEditor打造一个复杂json编辑器
- 【华为云技术分享】竞享实例:让你尽享云服务的“鱼”和“熊掌”
- Mysql表用自增主键的选型
- 四阶行列式计算_四阶行列式的计算
- java中的criteria_java-jpa-criteriaBuilder使用入门
- 630显卡驱动安装win7_Centos7 显卡驱动安装教程
- 第二次作业+105032014049
- 12,三维Panel
- amd显卡bios更新工具_【硬件资讯】AMD又Yes啦?全新Ryzen 5000发布!游戏最强CPU尘埃落定!现有主板无缝衔接!!...
- 数据泵导入报错ORA-39125和LPX-00225
- 文件加密器 java_文件加密器: 使用Java Swing编写的文件加密工具,可批量加密电脑中的文件。兼容Windows和Linux。...
- Java逐行读取fasta文件
- shamir秘密共享方案_Shamir秘密分享的初学者指南
- 实战! excel常用函数中lookup的用法
- C语言输入三边求三角形面积
热门文章
- 【转载】JAVA的泛型和C++的模板的区别与联系
- 【python】numpy数组的维度增减方法
- 枚举数据类型 c# 114866833
- linux-索引1909
- linux-基本权限UGO-读写执行权限
- Android 应用内更新 Support in-app updates [GP官方支持]
- Xcode 9.0 beta 3 GPUImage崩溃问题(presentBufferForDisplay)
- macOS卸载Java9及利用Homebrew搭建并配置Java开发环境
- 请给出linux中查看系统已经登录用户的命令?
- Chrome开发者工具之JavaScript内存分析