【腾讯Java笔试】9.3日的小问号

有老哥是第二题数组越界的嘛,找不到问题,是我太菜了吗

下面是代码

import java.util.*;

public class Test11 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        List<List<Integer>> nums = new ArrayList<>();
        int[][] dp = new int[n][n];
        for(int i=0;i<m;i++){
            List<Integer> tmp = new ArrayList<>();
            int x = sc.nextInt();
            for(int j=0;j<x;j++)
                tmp.add(sc.nextInt());
            nums.add(tmp);
        }
        for(int k=0;k<nums.size();k++){
            List<Integer> tmp = nums.get(k);
            for(int i=0;i<tmp.size();i++) {
                for (int j = 0; j < tmp.size(); j++) {
                    if (i == j)
                        continue;
                    dp[tmp.get(i)][tmp.get(j)] = 1;
                }
            }
        }

        Deque<Integer> deque = new ArrayDeque<>();
        deque.addLast(0);
        int res = 0;
        dp[0][0] = 1;
        while(!deque.isEmpty()){
            int num = deque.pollFirst();;

            res++;

            for(int i=0;i<n;i++){
                if(i==num)
                    continue;
                if(dp[num][i]==1){
                    if(dp[i][i]==0){
                        deque.addLast(i);
                        dp[i][i] = 1;
                    }
                }

            }
        }
        System.out.println(res);
    }

}


#笔试题目##腾讯#
全部评论
+1,我是并查集越界,只过了20%,是在想不通是哪里越界的
点赞 回复 分享
发布于 2020-09-06 22:08
我也!样例可以过,本地跑也没说越界,就是不懂为什么越界。
点赞 回复 分享
发布于 2020-09-06 22:06

相关推荐

Java面试先知:我也是和你一样的情况,hr 说等开奖就行了
点赞 评论 收藏
分享
美丽的95后准备进厂:第二个是外卖➕点评吧,很眼熟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务