【剑指offer】面试题30:包含min函数的栈
来源:互联网 发布:小米手环2清除数据 编辑:程序博客网 时间:2024/06/06 09:10
完整代码地址
完整代码地址
题目
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路
用一个值来保存最小值是行不通的,因为栈pop操作后,最小值就变了。
但是可以使用另外一个栈minStack来保存最小值。
每次push操作时,将当前最小值与新元素对比得出新的最小值,同时push进minStack。
每次pop操作时,两个栈同时pop。
代码
public class _30_MinInStack { private Stack<Integer> stack = new Stack<>(); private Stack<Integer> minStack = new Stack<>(); public void push(int node) { stack.push(node); if(minStack.isEmpty()) { minStack.push(node); } else if(minStack.peek() > node) { minStack.push(node); } else { minStack.push(minStack.peek()); } } public void pop() { stack.pop(); minStack.pop(); } public int top() { return stack.peek(); } public int min() { return minStack.peek(); }}
测试
public class _30_Test { public static void main(String[] args) { test1(); } /** * 1.新压入栈的数字比之前的最小值大 * 2.新压入栈的数字比之前的最小值小 * 3.弹出栈的数字不是最小元素 * 4.弹出栈的数字是最小元素 */ private static void test1() { _30_MinInStack mis = new _30_MinInStack(); mis.push(4); mis.push(5); mis.push(6); MyTest.equal(mis.top(), 6); MyTest.equal(mis.min(), 4); mis.pop(); mis.pop(); MyTest.equal(mis.top(), 4); MyTest.equal(mis.min(), 4); mis.push(2); MyTest.equal(mis.top(), 2); MyTest.equal(mis.min(), 2); mis.pop(); MyTest.equal(mis.top(), 4); MyTest.equal(mis.min(), 4); }}
阅读全文
0 0
- 【剑指offer】面试题 30:包含 min 函数的栈
- 【剑指offer】面试题30:包含min函数的栈
- 剑指offer--面试题30:包含min函数的栈
- [剑指offer][面试题21]包含min函数的栈
- 剑指offer 面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 剑指offer 面试题21 包含min函数的栈
- 《剑指Offer》面试题21:包含min函数的栈
- 剑指offer面试题21-包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指offer-面试题21.包含min函数的栈
- 剑指offer面试题 包含min函数的栈
- 剑指Offer----面试题21:包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指offer面试题21:包含min函数的栈
- 剑指Offer面试题21:包含min函数的栈
- HDU 1005 Number Sequence(矩阵快速幂)
- 欢迎使用CSDN-markdown编辑器
- crazyflie 功能包安装
- python文件分段的两种方式
- 深度学习之我见
- 【剑指offer】面试题30:包含min函数的栈
- 工作流介绍
- 接口 内部类 垃圾回收机制
- 华为机试——字符串反转
- 漫步最优化二十——下降函数
- 使用intellij idea搭建spring-springmvc-mybatis整合框架环境
- ArrayList用法及源码解析
- 第8章 Express
- CFPetya and Exam(暴力)