为什么B题java过不了,同样的做法java总是报数组越界

java写的题目总是报“请检查是否存在数组越界等非法访问情况”

然后我试着打开了所有提交,发现所有通过的代码都是c++的。

之前也遇到过这种情况,不知道怎么解决。哪位大佬可以解答一下吗?

附上代码,检查过了应该不存在数组越界问题。

import java.util.*;


class Node{
    int next;
    int val;

    public Node(int next, int val) {
        this.next = next;
        this.val = val;
    }
}

public class Solution {
    /**
     * 最短距离
     * @param n int整型
     * @param Edge Point类一维数组
     * @param val int整型一维数组
     * @return long长整型
     */
    ArrayList<Node>[] map;
    boolean[]  vis;
    long max=0;
    public long dfs(int node){
        vis[node]=true;
        long m1=0,m2=0;
        for(Node next:map[node]){
            if(vis[next.next])continue;
            long temp=dfs(next.next)+next.val;
            if(temp>=m1){
                m2=m1;m1=temp;
            }
            else if(temp>m2){
                m2=temp;
            }
        }
        max=Math.max(max,m1+m2);
        return m1;
    }
    public long solve (int n, Point[] Edge, int[] val) {
        // write code here
        map=new ArrayList[n+1];
        for(int i=1;i<=n;i++)map[i]=new ArrayList<>();
        vis=new boolean[n+1];
        max=0;
        for(int i=0;i<n-1;i++){
            map[Edge[i].x].add(new Node(Edge[i].y,val[i]));
            map[Edge[i].y].add(new Node(Edge[i].x,val[i]));
        }
        dfs(1);
        long sum=0;
        for(int i=0;i<n-1;i++){
            sum+=2*val[i];
        }
        return sum-max;
    }
}
全部评论
很多次了 java会出现这种毛病,我也遇到很多次了 习惯了
点赞 回复 分享
发布于 2020-08-02 13:33

相关推荐

整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务