首页 > 代码库 > 剑指offer30题
剑指offer30题
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
看到这个 题目,第一想法就是,我要不定义一个变量,指向当前栈中最小的值,每次入栈,就和最小值进行比较,如果比最小值小,则最小值指向该值,否则最小值依旧。
但很快遇到问题,如果在出栈时,最小值出来后,比最小值小的值呢?无法查到了啊!
于是思路出来了,用一个辅助栈,第一次将入栈的值放入,接下来每一次,和栈顶的值进行比较,如果比它小,则将该值放入,否则把栈顶的值再次放入。
此题参考剑指offer书的思路。
下面附代码。
package com.algorithm04; import java.util.Stack; public class Algorithm30 { Stack<Integer> date = new Stack<Integer>(); Stack<Integer> min_date = new Stack<Integer>(); public void push(int node) { date.push(node); if(min_date.size()==0||min_date.peek()>node){ min_date.push(node); }else{ min_date.push(min_date.peek()); } } public void pop() { date.pop(); min_date.pop(); } public int top() { return date.peek(); } public int min() { return min_date.peek(); } public static void main(String[] args) { } }
剑指offer30题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。