繁体   English   中英

在 java 中使用 ArrayList 设计堆栈时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM