[英]Error while designing Stack using ArrayList in java
我正在尝试寻找问题的答案 - 设计一个支持推送、弹出、顶部和在恒定时间内检索最小元素的堆栈。
import java.util.*;
public class StackImplement{
public static void main(String []args){
MinStack obj = new MinStack();
obj.push(-2);
obj.push(0);
obj.push(-3);
System.out.println("Initaially stack :");
obj.display();
System.out.println();
System.out.println("After first getMin() = " + obj.getMin());
obj.pop();
System.out.println("Stack After pop() : ");
obj.display();
System.out.println();
System.out.println("After second getMin() = " + obj.getMin());
}
}
class MinStack {
int top = -1;
int min = (int)Math.pow(2,31);
List<Integer> stack;
public MinStack() {
stack = new ArrayList<Integer>();
}
public void push(int val) {
stack.add(val);
top++;
}
public void pop() {
stack.remove(top);
top--;
}
public int top() {
int x = stack.get(top);
return x;
}
public int getMin() {
for(int x:stack){
if(x<min)
min = x;
}
return min;
}
public void display(){
for(int x:stack)
System.out.print(x +" ");
}
}
我已经编写了上面的程序,但是在 'getMin()' 方法中遇到了问题。 第一次 'getMin()' 给出正确的 output。但是在 'pop()' 之后,'getMin()' 方法应该返回 ans 为 '-2'。 给出错误答案如下:
Initaially stack :
-2 0 -3
After first getMin() = -3
Stack After pop() :
-2 0
After second getMin() = -3
请帮我解决这个问题。
getMin
时,都需要将min
重置为(int)Math.pow(2,31)
aka Integer.MAX_VALUE
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.