面试题 21: 包含min函数的栈
2017-07-16 09:11
190 查看
一. 题目
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min 函数.在该栈中,调用min,push 及pop的时间复杂度都是O(1).
代码请到我的代码库中下载 Point2Offer
二. 代码
有不妥当之处,麻烦告知:D
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的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
相关文章推荐
- 面试题21:栈:包含min函数的栈
- 面试题21:包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指offer-面试题21.包含min函数的栈
- 剑指offer——面试题21:包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 剑指offer面试题21-包含min函数的栈
- 面试题21包含min函数的栈
- 【剑指Offer】面试题21:包含min函数的栈
- 《剑指offer》(面试题21):包含min函数的栈
- 面试题21:包含min函数的栈
- 《剑指offer》面试题21—包含min函数的栈
- 剑指Offer----面试题21:包含min函数的栈
- 剑指offer面试题[21]包含min函数的栈
- 剑指offer——面试题21:包含min函数的栈(泛型编程,一个巧妙的思维)
- 剑指offer_面试题21_包含min函数的栈
- 《剑指Offer》学习笔记--面试题21:包含min函数的栈
- 剑指offer--面试题21:包含min函数的栈--Java实现
- 剑指Offer之面试题21:包含min函数的栈
- 剑指Offer_面试题21_包含min函数的栈