剑指offer21,包含min函数的栈(Java实现)

import java.util.Stack;
/**
 * 具有getmin功能的栈
 * @author lenovo047
 *
 */

public class test21 {
    private static Stack<Integer> stackData = new Stack<>();
    private static Stack<Integer> stackMin = new Stack<>();
    

    public static void push(int num){
        if(stackMin.isEmpty()){    //栈为空,直接放进去
            stackMin.push(num);
        } else if(stackMin.peek() > num){   //新数比栈顶元素小,放新数
            stackMin.push(num);
        } else {                                              //新数比栈顶元素大,放老数
            stackMin.push(stackMin.peek()); //peek只是复制这个数
        }
        stackData.push(num);
    }
    
    public static int pop(){
        if(stackData.isEmpty()){
            throw new RuntimeException("栈为空");
        }
        stackMin.pop();
        return stackData.pop();
    }
    public static int getMin(){
        if(stackMin.isEmpty()){
            throw new RuntimeException("栈为空");
        }
        return stackMin.peek();
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值