设计一个具有最小值getMin功能的栈
设计一个具有getMin功能的栈 要求:
- 1、pop、push、getMin操作时间复杂度都是O(1)
- 2、设计的栈类型可以使用现有的栈
import java.util.Stack;
public class GetMinStack {private Stack stackData;
private Stack stackMin;
public GetMinStack() {
stackData = https://www.it610.com/article/new Stack<>();
stackMin = new Stack<>();
}public Integer pop() {
if (stackData.isEmpty()) {
throw new RuntimeException("Stack is Empty!");
}
int val = stackData.pop();
if (val == getMin()) {
stackMin.pop();
}
return val;
}public void push(Integer val) {
if (stackMin.isEmpty()) {
stackMin.push(val);
} else if(val <= getMin()){
stackMin.push(val);
}
stackData.push(val);
}public Integer getMin() {
if (stackMin.isEmpty()) {
throw new RuntimeException("Stack is Empty!");
}
return stackMin.peek();
}}
解法2
import java.util.Stack;
public class GetMinStack2 {private Stack stackData;
private Stack stackMin;
public GetMinStack2() {
stackData = https://www.it610.com/article/new Stack<>();
stackMin = new Stack<>();
}public Integer pop() {
if (stackData.isEmpty()) {
throw new RuntimeException("Stack is Empty!");
}
stackMin.pop();
return stackData.pop();
}public void push(Integer val) {
if (stackMin.isEmpty()) {
stackMin.push(val);
} else if(val <= getMin()){
stackMin.push(val);
} else {
int min = stackMin.peek();
stackMin.push(min);
}
stackData.push(val);
}public Integer getMin() {
if (stackMin.isEmpty()) {
throw new RuntimeException("Stack is Empty!");
}
return stackMin.peek();
}
}
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- PMSJ寻平面设计师之现代(Hyundai)
- 一个人的碎碎念
- 七年之痒之后
- 我从来不做坏事
- 异地恋中,逐渐适应一个人到底意味着什么()
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 迷失的世界(二十七)
- live|live to inspire 一个普通上班族的流水账0723