问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 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)相关推荐

  1. LeetCode刷题记录——队列、栈

    20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...

  2. 【leetcode刷题笔记】单调栈

    典型例题:求左边第一个比当前元素小的数 (模板,弄懂) 代码: #include<iostream> using namespace std; #include<stack> ...

  3. leetcode的Hot100系列--155. 最小栈

    栈:先入后出,后入先出 像电梯一样,先进入电梯的,走到电梯最深处,后进入电梯的,站在电梯门口, 所以电梯打开的时候,后进入的会先走出来,先进入的会后走出来. push,对应入电梯,把数据往里面压 po ...

  4. C#LeetCode刷题-栈

    栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水 35.6% 困难 71 简化路 ...

  5. C#LeetCode刷题-设计

    设计篇 # 题名 刷题 通过率 难度 146 LRU缓存机制 33.1% 困难 155 最小栈 C#LeetCode刷题之#155-最小栈(Min Stack) 44.9% 简单 173 二叉搜索树迭 ...

  6. Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)

    ** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...

  7. Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言)

    ** Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言) ** 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top( ...

  8. Leetcode刷题 232题:用栈实现队列(基于python3和c++两种语言)

    Leetcode刷题 232题:用栈实现队列(基于python3和c++两种语言) 题目: 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部. pop() – 从队列首部移除元 ...

  9. Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言)

    Leetcode刷题 1441题: 用栈操作构建数组(基于python3和c++两种语言) ** 题目: ** 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2 ...

最新文章

  1. 兼容IE8,滚动加载下一页
  2. JAVA基础实例(一)
  3. Java有趣的小功能_Java8 中有趣酷炫的小技巧你用到了那些
  4. 开发者如何写好技术简历?
  5. linux 文件读取 监控,linux 文件系统的监控
  6. 使用jsonEditor打造一个复杂json编辑器
  7. 【华为云技术分享】竞享实例:让你尽享云服务的“鱼”和“熊掌”
  8. Mysql表用自增主键的选型
  9. 四阶行列式计算_四阶行列式的计算
  10. java中的criteria_java-jpa-criteriaBuilder使用入门
  11. 630显卡驱动安装win7_Centos7 显卡驱动安装教程
  12. 第二次作业+105032014049
  13. 12,三维Panel
  14. amd显卡bios更新工具_【硬件资讯】AMD又Yes啦?全新Ryzen 5000发布!游戏最强CPU尘埃落定!现有主板无缝衔接!!...
  15. 数据泵导入报错ORA-39125和LPX-00225
  16. 文件加密器 java_文件加密器: 使用Java Swing编写的文件加密工具,可批量加密电脑中的文件。兼容Windows和Linux。...
  17. Java逐行读取fasta文件
  18. shamir秘密共享方案_Shamir秘密分享的初学者指南
  19. 实战! excel常用函数中lookup的用法
  20. C语言输入三边求三角形面积

热门文章

  1. 【转载】JAVA的泛型和C++的模板的区别与联系
  2. 【python】numpy数组的维度增减方法
  3. 枚举数据类型 c# 114866833
  4. linux-索引1909
  5. linux-基本权限UGO-读写执行权限
  6. Android 应用内更新 Support in-app updates [GP官方支持]
  7. Xcode 9.0 beta 3 GPUImage崩溃问题(presentBufferForDisplay)
  8. macOS卸载Java9及利用Homebrew搭建并配置Java开发环境
  9. 请给出linux中查看系统已经登录用户的命令?
  10. Chrome开发者工具之JavaScript内存分析