实现一个特殊的栈,要求push,poll , getMin方法时间复杂度都是O(N)
借助两个栈来实现
public class GetMinStack {
    private Stack<Integer> stackData;
    private Stack<Integer> stackMin;
    public GetMinStack() {
        this.stackData = new Stack<Integer>();
        this.stackMin = new Stack<Integer>();
    }
    public void push(int obj) {
        if (stackMin.isEmpty()) {
            stackMin.push(obj);
        } else {
            stackMin.push(obj < getmin() ? obj : getmin());
        }
        stackData.push(obj);
    }
    public int getmin() {
        if (stackMin.isEmpty()) {
            throw new RuntimeException("Your stack is empty.");
        }
        return stackMin.peek();
    }
    public int pop() {
        if (this.stackData.isEmpty()) {
            throw new RuntimeException("Your stack is empty.");
        }
        this.stackMin.pop();
        return this.stackData.pop();
    }
}
实现一个特殊的栈,要求push,poll , getMin方法时间复杂度都是O(N)的更多相关文章
- Swift处理堆栈问题——给定两组序列,其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序
		
题目:输入两个整数序列.其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序.为了简单起见,我们假设push 序列的任意两个整数都是不相等的.比如输入的push 序列是1. ...
 - 【编程题目】栈的 push、pop 序列
		
29.栈的 push.pop 序列(栈)题目:输入两个整数序列.其中一个序列表示栈的 push 顺序,判断另一个序列有没有可能是对应的 pop 顺序.为了简单起见,我们假设 push 序列的任意两个整 ...
 - 24.栈的push和pop序列[StackPushPopSequence]
		
[题目] 输入两个整数序列.其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序.为了简单起见,我们假设push序列的任意两个整数都是不相等的. 比如输入的push序列是1.2 ...
 - (栈)栈 给定push序列,判断给定序列是否是pop序列
		
题目: 输入两个整数序列.其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序.为了简单起见,我们假设push序列的任意两个整数都是不相等的. 比如输入的push序列是1.2. ...
 - 每天一道算法题(11)——栈的push、pop 序列
		
题目:输入两个整数序列.其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序.为了简单起见,我们假设push 序列的任意两个整数都是不相等的. 例如:输入的push 序列是 ...
 - 数据结构---设计一个栈,push, pop, min 时间复杂度都是 O(1)
		
普通的栈,push, pop 操作的复杂度是 O(1), 但是如果要找出其中的最小值,则需要 O(N)的时间. 题目要求 min 复杂度也是 O(1), 做法便是 空间换时间,每一步栈的最小值都用一个 ...
 - UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
		
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
 - 29. 栈的push,pop序列
		
题目:给定2个整数序列,其中1个是栈的push顺序,判断另一个有没有可能是对应的pop顺序 解:其实这题主要是判断进栈次数和出栈次数誓不是相等.我是用栈作的,效率不高,每一个元素最多出栈1次,进栈1此 ...
 - iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
		
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
 
随机推荐
- istio流量管理
			
目录 1 准备工作 1.1 在k8s部署istio 1.2 istio自动注入 1.3 应用部署要求 2 负载均衡 3 流量迁移:金丝雀发布 3.1 发布应用 3.2 创建目标规则:Destinati ...
 - Flask模板渲染
			
目录 Flask模板渲染 Jinja2模板引擎简介 模板 Jinja2 模板变量 变量 控制结构 宏,类似Python代码中的函数 模板继承 包含(Include) 过滤器 链式调用 常见内建过滤器 ...
 - Vue配置路由和传参方式及路由守卫!
			
安装路由 npm i vue-router -S 引入路由 import VueRouter form VueRouter 注入路由模块 Vue.use(VueRouter) 定义路由匹配规则 let ...
 - QPainter绘制图片填充方式(正常大小、剪切大小、自适应大小、平铺)
			
Qt中QPainter提供了绘制图像的API,极大地方便了我们对图像的绘制. Qt中提供了QPixmap, QBitmap,QBitMapQImage,QPicture等图像绘图设备,它们的类关系如下 ...
 - 为什么MES实施起来效果不佳?
			
原因一:我国制造业存在管理基础的先天不足 我国企业与发达国家企业在管理发展上,存在较大的差别.发达制造国家经历了管理探索.发展.成熟.再提高的全过程,从管理基础的奠定到思想认识的深刻程度,都是我国所无 ...
 - WDA基础十八:Select option配置
			
为了省代码...为了方便管理WDA的查询条件... 首先建配置表: 说明: 上面的KEY基本都是维护的维度,可以根据销售组织,根据用户组,根据组件,根据SELECT OPTION的不同...等等,可以 ...
 - Hashtable,HashMap和ConcurrentHashMap的原理及区别
			
一.原理 Hashtable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashM ...
 - MySQL主从仅同步指定库
			
有两种方式,1.在主库上指定主库二进制日志记录的库或忽略的库: vim /etc/my.cnf ... binlog-do-db=xxxx 二进制日志记录的数据库 binlog-ignore-db=x ...
 - 字符串比较==和equals的区别
			
<Stack Overflow 上 370万浏览量的一个问题:如何比较 Java 的字符串?> 比较详细的比较了==和equals方法的区别. 那借此机会,我就来梳理一下 Stack Ov ...
 - blocking  cache和non-blocking cache
			
- a Blocking Cache will not accept any more request until the miss is taken care of. - a Non-blockin ...