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(); }}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦