标签:注意 最小 一个 入栈 数据结构 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(); } }标签:注意 最小 一个 入栈 数据结构 tmp return 两个栈 pac
原文地址:http://blog.51cto.com/12222886/2063011