面试题 21: 包含min函数的栈
来源:互联网 发布:拓普康es52传输软件 编辑:程序博客网 时间:2024/06/06 00:05
一. 题目
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min 函数.在该栈中,调用min,push 及pop的时间复杂度都是O(1).
代码请到我的代码库中下载 Point2Offer
二. 代码
package week_5;import java.util.Stack;/**难度系数:*** * 剑指offer: 包含min函数的栈 * 方法: 建一个辅助栈,存最小值 * 测试用例: * @author dingding * Date:2017-7-11 21:40 * Declaration: All Rights Reserved! */public class No21 { public static void main(String[] args) { test1(); test2(); test3(); test4(); } //定义新栈 public static class CStack{ private Stack<Integer> stack_data = new Stack<>(); private Stack<Integer> stack_min = new Stack<>(); private void push(Integer number){ stack_data.add(number); if (stack_min.isEmpty() || number<stack_min.peek()) { stack_min.add(number); }else { stack_min.add(stack_min.peek()); } } private int pop(){ if (stack_data.isEmpty() && stack_min.isEmpty()) { throw new RuntimeException("The stack is already empty"); } stack_min.pop(); return stack_data.pop(); } private int min(){ if (!stack_data.isEmpty() && !stack_min.isEmpty()) { return stack_min.peek(); }else { throw new RuntimeException("No more element."); } } } /*===================测试用例=============*/ //入栈比前一个大的数 private static void test4() { CStack cStack = new CStack(); cStack.push(3); cStack.push(4); int result = cStack.min(); System.out.println(result); System.out.println(); } //入栈比前一个小的数 private static void test3() { CStack cStack = new CStack(); cStack.push(3); cStack.push(4); cStack.push(2); int result = cStack.min(); System.out.println(result); System.out.println(); } //弹出栈不是最小的数 private static void test2() { CStack cStack = new CStack(); cStack.push(1); cStack.push(3); cStack.push(4); cStack.pop(); int result = cStack.min(); System.out.println(result); System.out.println(); } //弹出栈是最小的数 private static void test1() { CStack cStack = new CStack(); cStack.push(3); cStack.push(4); cStack.push(2); cStack.push(1); cStack.pop(); int result = cStack.min(); System.out.println(result); System.out.println(); }}
有不妥当之处,麻烦告知:D
阅读全文
0 0
- 面试题21:栈:包含min函数的栈
- [剑指offer][面试题21]包含min函数的栈
- 剑指offer 面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 面试题21 包含min函数的栈
- 剑指offer 面试题21 包含min函数的栈
- 面试题21:包含min函数的栈
- 《剑指Offer》面试题21:包含min函数的栈
- 面试题21:包含min函数的栈
- 面试题21包含min函数的栈
- 剑指offer面试题21-包含min函数的栈
- 面试题21包含min函数的栈
- 面试题21:包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指Offer----面试题21:包含min函数的栈
- 面试题21:包含min函数的栈
- POJ2923:Relocation(状态压缩dp)
- Java垃圾回收算法
- POJ
- LCA实现的三种不同的方法
- UVA 10003 Cutting Sticks
- 面试题 21: 包含min函数的栈
- nginx、php-fpm启动脚本详解
- jvmGC(垃圾回收)机制
- css边框border
- 一元多项式求导
- 查看某一目录下所有文件大小
- 543. Diameter of Binary Tree
- 朴素贝叶斯的概率理论及其python代码实现文本分类的实例
- Oracle读书笔记(一)