首页 > 其他 > 详细

剑指offer20

时间:2018-01-19 20:48:11      阅读:211      评论:0      收藏:0      [点我收藏+]
package jianzhiOffer; import java.util.Stack; /**  * 定义栈的数据结构,请在该类型中实现一个能够得  * 到栈最小元素的min函数。   * @author user  * 思路:创建两个栈,一个用于存储数据,一个用于  * 存储最小数据,还要注意两个栈应该保持同步的入栈  * 和出栈,以保证minStack顶部始终是最小的数据  */ public class ch20 { Stack<Integer> stack = new Stack<>(); Stack<Integer> minStack = new Stack<>(); Integer tmp = null; public void push(int node) { stack.push(node); //判断如果为空则直接压入 if(minStack.isEmpty()) { minStack.push(node); } else { //否则,进行比较 tmp = stack.peek(); if(tmp <= minStack.peek()) { minStack.push(tmp); } else { //当发现当前压入数据不是最小的时候,minStack还应继续压入以前的最小数 //以此保证minStack顶部始终是最小的数据 minStack.push(minStack.peek()); } } } public void pop() { stack.pop(); minStack.pop(); } public int top() { return stack.peek(); } public int min() { return minStack.peek(); } }


剑指offer20

原文:http://blog.51cto.com/12222886/2063011

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!