实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
注意事项
如果堆栈中没有数字则不能进行min方法的调用
样例
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
注意事项
如果堆栈中没有数字则不能进行min方法的调用
样例
如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
import java.util.Stack;
/**
* 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
注意事项
如果堆栈中没有数字则不能进行min方法的调用
样例
如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
*
* @author Dell
*
*/
public class Test12 {
Stack<Integer> s;
Stack<Integer> fuzhu;
public Test12()
{
s=new Stack<>();
fuzhu=new Stack<>();
}
public void push(int number)
{
s.push(number);
if(fuzhu.isEmpty()==true){
fuzhu.push(number);
}
else
{
int temp=fuzhu.peek();
if(number<temp)
fuzhu.push(number);
else
fuzhu.push(temp);
}
}
public int pop() throws Exception
{
if(s.isEmpty()==true)
throw new Exception("栈空");
else
{
fuzhu.pop();
return s.pop();
}
}
public int min() throws Exception
{
if(fuzhu.isEmpty()==true)
throw new Exception("栈中无元素");
else
return fuzhu.peek();
}
public static void main(String[] args) throws Exception {
Test12 t=new Test12();
t.push(4);
t.push(8);
t.push(2);
t.push(1);
t.pop();
System.out.println(t.min());
}
}