java - 在 java 中使用 ArrayList 设计堆栈时出错
问题描述
我正在尝试寻找问题的答案 - 设计一个支持推送、弹出、顶部和在恒定时间内检索最小元素的堆栈。
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()' 给出正确的输出。但是在 '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
推荐阅读
- c# - c# RDLC ASPNET 表单页面中的新列为空
- javascript - 在 Chrome 中,console.log 无法在非 icognito 模式下工作
- linux - /bin/bash^M: 不好的解释器是什么意思?
- azure - 以编程方式将 azure 资源 A 分配给 Azure 资源 B 的参与者角色
- redis - 更简洁的Redis启动日志
- graphql - Apollo 缓存使用返回的有效负载重定向
- jupyter-notebook - Jupyter 前端扩展 JavaScript API 的文档在哪里?
- android - 我想知道如何在 ANDROID 中制作我的 BUTTON START 动画
- python - 如何在(仅有点)有序列表中查找元素序列
- c++ - 如何在 gcc 4.4 中检查两个 unordered_map 实例是否相等?