码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer20

时间:2018-01-19 20:51:04      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:注意   最小   一个   入栈   数据结构   tmp   return   两个栈   pac   

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

标签:注意   最小   一个   入栈   数据结构   tmp   return   两个栈   pac   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!