您的位置:首页 > 其它

设计一个具有getMin()功能的栈

2017-11-02 16:48 399 查看
设计一个具有getMin()功能的栈:

1.push、pop、getMin()时间复杂度为O(1)

2.设计栈时可以使用现有的栈结构

/**
* 设计一个具有getMin()功能的栈:
* 1.pop,push,getMin()时间复杂度为O(1)
* 2.设计的栈可以使用现有的栈结构
* @author Nemo
*
*/
public class StackDemo {

private  Stack<Integer> stackData = new Stack<Integer>();
private  Stack<Integer> stackMin = new Stack<Integer>();
public void push(Integer data){
if(data == null){
throw new IllegalArgumentException("Illegal argument");
}
if(stackMin.isEmpty() || stackMin.peek() >=data){
this.stackMin.push(data);
}else{
this.stackMin.push(stackMin.peek());
}
this.stackData.push(data);
}

public Integer pop(){
if(stackData.isEmpty()){
throw new RuntimeException("stack is empty");
}
this.stackMin.pop();
return this.stackData.pop();
}

public Integer getMin(){
if(stackMin.isEmpty()){
throw new RuntimeException("stack is empty");
}
return stackMin.peek();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: