当前位置: 首页 > news >正文

LeetCode -- Min Stack

题目描述:


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.


设计一个栈,要求获取最小值的时间复杂度为常数。


思路:
对变成语言类库内部的栈进行封装,维护使用一个最小值的成员即可。要注意的就是弹出栈的操作,如果栈中依然有值,需要求出当前最小值更新最小值;如果栈空,最小值设为空。


实现代码:


public class MinStack {
    private Stack<int> _stack ;
	private int? _min;
	public MinStack(){
		_stack = new Stack<int>();
	}
    public void Push(int x) {
        if(!_min.HasValue || x < _min){
			_min = x;
		}
		_stack.Push(x);
    }


    public void Pop() {
        var x = _stack.Pop();
		if (x == _min){
			if(_stack.Count > 0){
				_min = _stack.Min();
			}
			else{
				_min = null;
			}
		}
    }


    public int Top() {
        return _stack.Peek();
    }


    public int GetMin() {
        return _min.Value;
    }
}


相关文章:

  • SQL2005CLR函数扩展-繁简转换
  • LeetCode -- Minimum Size Subarray Sum
  • LeetCode -- Number of 1 Bits
  • 对象属性拷贝(全匹配拷贝)
  • LeetCode -- Reorder List
  • 最近
  • LeetCode -- Search a 2D Matrix II
  • [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)
  • LeetCode -- 3Sum Closest
  • 使用反射将业务对象绑定到 ASP.NET 窗体控件
  • LeetCode -- 4Sum
  • LeetCode -- Binary Tree Level Order Traversal II
  • (ZT)一个美国文科博士的YardLife
  • LeetCode -- Clone Graph
  • Oracle 中的nvl() 函数 相当于Sql Server 的 isnull()
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • CSS 提示工具(Tooltip)
  • ECMAScript入门(七)--Module语法
  • GraphQL学习过程应该是这样的
  • vue--为什么data属性必须是一个函数
  • 驱动程序原理
  • 日剧·日综资源集合(建议收藏)
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 学习ES6 变量的解构赋值
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • #mysql 8.0 踩坑日记
  • (C#)一个最简单的链表类
  • (javascript)再说document.body.scrollTop的使用问题
  • (js)循环条件满足时终止循环
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (万字长文)Spring的核心知识尽揽其中
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转)重识new
  • .form文件_SSM框架文件上传篇
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET 反射 Reflect
  • .net实现客户区延伸至至非客户区
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @javax.ws.rs Webservice注解
  • @RequestMapping处理请求异常
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • [IDF]摩斯密码
  • [JavaScript]如何讓IE9, IE8, IE7, IE6關閉視窗時不彈出對話訊息
  • [JavaWeb玩耍日记]Maven的安装与使用
  • [linux] shell中的()和{}
  • [paper] lift,splat,shooting 论文浅析
  • [Python] 输入与输出