码农小汪-剑指Offer之18-包含min函数的栈
2016-03-30 20:06
375 查看
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。如下我们可以看出来,我们必须的还有原来的行为。
public void push(int node) { } public void pop() { } public int top() { } public int min() { }
题解
我们的保持原来的行为,栈以前能做的事情,我们都得做好,这个首要完成的事情,其次,我们还的研究,怎么把最新的东西保存下来下次利用,一下子就返回回来了。我们保存原来的内容,就是用栈就行了,以前怎么玩得就怎么玩
我们增加额外的空间去做这件事,就可以了,比如在来一个栈,我们每次插入的时候比较一下就要了,比栈顶的小,就插入,否则放弃插入到minStack。每次删除元素的时候如果normalStack的值和我现在的值相等,我们就删除minStack就可以啦
下面的代码:
package JianzhiOffer; import java.util.Stack; /** * * @author JetWang * */ public class Slution18 { Stack<Integer> normalStack = new Stack<Integer>(); Stack<Integer> minStack = new Stack<Integer>(); public void push(int node) { normalStack.push(node); if (minStack.isEmpty()) { minStack.push(node); } else { int old = minStack.peek(); if (node < old) { minStack.push(node); } } } public void pop() { if (!normalStack.isEmpty()) { int value = normalStack.pop(); int min = minStack.peek(); if (min == value) { minStack.pop(); } } } public int top() { return normalStack.peek(); } public int min() { return minStack.peek(); } }
相关文章推荐
- 阿里电话面试经历
- 史上最全的iOS面试题及答案
- 面试题68:按之字形顺序打印二叉树
- 码农小汪-剑指Offer之17-顺时针打印矩阵
- IOS RunLoop面试题
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
- leetCode之旅(14)-Number of 1 Bits
- [leetcode-338]Counting Bits
- 2017腾讯内推实习生面试经历(已获得offer)
- 码农小汪-剑指Offer之16-二叉树的镜像
- LeetCode之旅(13)-Valid Anagram
- 面试题67:把二叉树打印成多行
- 码农小汪-剑指Offer之15-树的子结构
- 常见面试题总结
- 常见面试题总结
- 程序员必备:100本免费编程图书以及整理IT网站
- 剑指offer面试题3—二维数组中的查找
- 程序员别迷茫,通往成功的路有很多条
- 程序员学习编程需要攻克的8个障碍
- leetCode之旅(12)-反转二叉树