剑指offer题21 包含min函数的栈
2015-12-06 20:48
459 查看
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
题目解析:题目的重点在于,每次调用min函数都可以pop出当前栈中的最小值;
可以考虑使用一个辅助栈minStack,当每次push进来一个数值node时,minStack将当前栈顶值(默认当前最小值)与node进行比较,push捡来最小值;则在每个时刻,minStack中保存的都是当前栈中的最小值;然后按顺序pop出来就行了;(要注意pop时,数据栈和辅助栈中的数据要保持同步,因此应该同时pop)
代码:
public class Solution { private Stack<Integer> dataStack = new Stack<>(); // 数据Stack private Stack<Integer> minStack = new Stack<>(); // 保存最小值的辅助Stack public void push(int node) { dataStack.push(node); if (minStack.isEmpty()) minStack.push(node); else minStack.push(Math.min(node, minStack.peek())); } public void pop() { dataStack.pop(); minStack.pop(); } public int top() { return dataStack.peek(); } public int min() { return minStack.peek(); } }
相关文章推荐
- Microsoft 开源 Edge 浏览器的 javascript 引擎
- 剑指offer学习笔记2
- Sharepreferences
- SharedPreferences 使用
- (开发利器);全部springmvcm HTML5 bootstrap 全新技术
- H5/CSS3/JS/DOM最全大全网
- Java运用JSON实现后台与前端分工合作(代码实例)
- Javascript继承的概念理解
- 垂直居中显示的几个方法
- [问题解决] MVC5 中缺失jquery.unobtrusive-ajax,如何安装。
- Effective Objective-C 2.0 — 第二章 对象、消息、运行期 - 第六条:理解“属性”这一概念
- node项目部署相关问题
- iOS动画和特效(三)MotionEffects
- Java源码 SpringMVC Mybatis Shiro Bootstrap Rest Webservice
- CSS3秘笈:第三章
- CSS3秘笈:第二章
- CSS3秘笈:第一章
- js返回,页面暂存
- Node.js开发环境搭建
- 实现Entity,Dao,Service,Controller,JSP代码生成神器