剑指offer——包含min函数的栈

import java.util.ArrayList;
import java.util.Stack;
/**
* @author Tom Qian
* @email tomqianmaple@outlook.com
* @github https://github.com/bluemapleman
* @date 2017年8月18日
*/
//要求:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

//思路:本题比较简单,主要就是需要实现能够遍历栈中元素的功能,那么就可以用一个数组作为缓存,将栈中的元素全部pop到数组中,在直接用线性扫描获得最小的元素,之后记得将数组中的元素按照放置时的逆序压回栈就可以了。

public class 包含min函数的栈
{
    Stack<Integer> stack=new Stack<Integer>(); 
    public void push(int node) {
        stack.push(node);
    }

    public void pop() {
        stack.pop();
    }

    public int top() {
        int topEle=stack.pop();
        stack.push(topEle);
        return topEle;
    }

    public int min() {
        int size=stack.size();
        int [] tempArr=new int[size];
        for(int i=0;i<size;i++)
            tempArr[i]=stack.pop();

        for(int i=size-1;i>=0;i--)
            stack.push(tempArr[i]);


        int min=Integer.MAX_VALUE;
        for(int i=0;i<size;i++){
            int currentVal=tempArr[i];
            if(currentVal<min){
                min=currentVal;
            }
        }
        return min;


    }

    public static void main(String[] args)
    {
        包含min函数的栈 obj=new 包含min函数的栈();
        obj.push(3);
        obj.push(-1);
        obj.push(3);
        obj.push(10);
        obj.push(-10);
        System.out.println(obj.min());

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值