问题描述
实现一个栈, 支持以下操作:
- push(val) 将 val 压入栈
- pop() 将栈顶元素弹出, 并返回这个弹出的元素
- min() 返回栈中元素的最小值
重点
- 要求 O(1) 开销.
- 保证栈中没有数字时不会调用 min()
- 在仅允许使用一个栈的情况下,如何实现如题的功能?
主要考点
对stack栈对象及其方法push,pop,peek,min的灵活使用。
算法逻辑
- push及pop方法不做解释
- 观察题目要求,在栈中没有数字时,不调用min()方法
- 获取当前栈对象长度加以判断即可
实现代码
Stack<Integer> s = new Stack<>();
public void push(int n) {
s.push(n);
}
public int pop() {
return s.pop();
}
public int min() {
if(s.size() > 0){
Object []z = s.toArray();
Arrays.sort(z);
return (int)z[0];
}else{
return 0;
}
}