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;
}
}