找出栈中最小的元素

package stack;


/**
 * 找出栈中最小的元素
 * 先定义一个辅助栈,栈顶永远存最小的元素。如原栈中添加元素比辅助栈顶元素大,辅助栈的栈顶元素复制一遍
 * 放到辅助栈中,如果小,则直接放到辅助栈中。
 */
import java.util.Stack;


public class MinStack {
private Stack<Integer> stack=new Stack<Integer>();
private Stack<Integer> minStack=new Stack<Integer>();
public void push(int data){
stack.push(data);
if(minStack.size()==0 || minStack.peek()>data)
minStack.add(data);
else{
int date=minStack.peek();
minStack.add(date);//核心代码,peek返回的是栈顶代码
System.out.println("peek="+date+":minsize="+minStack.size());
}
}

public int pop() throws Exception{
if(stack.size()==0)
throw new Exception("栈中空了");
int data=stack.pop();
System.out.println("data="+data);
int mindata=minStack.pop();//核心代码,原栈出,辅助栈也出。
System.out.println("mindata="+mindata);
return data;
}
public Object min() throws Exception{
if(minStack.size()==0)
throw new Exception("栈中空了");
return minStack.peek();
}
public static void main(String[] args) throws Exception {
MinStack  minstack=new MinStack();
minstack.push(5);
minstack.push(7);
minstack.push(3);
minstack.push(4);
System.out.println(minstack.pop());
System.out.println(minstack.pop());
System.out.println("min="+minstack.min());

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值