头条笔试

请问下大家,第二题这样什么只能过80%,提示数组越界?不可能啊
import java.util.Scanner;

/**
 * Created by forcht on 2018/8/22.
 */
public class Main {
   static int[] xt={0,0,-1,1};
   static int[] yt={-1,1,0,0};
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        if(n<=0)return;
        int[][] map=new int[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                map[i][j]=scanner.nextInt();
            }
        }
        int count=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(map[i][j]==1){
                    dfs(map,i,j,n);
                    count++;
                }
            }
        }
        System.out.println(count);
    }
    static void dfs(int[][] map,int x,int y,int n){
        if(x<0||x>=n||y<0||y>=n||map[x][y]==0)return;
        map[x][y]=0;
        for(int i=0;i<4;i++){
            dfs(map,x+xt[i],y+yt[i],n);
        }
    }

}

全部评论
一样的思路
点赞 回复 分享
发布于 2018-09-09 12:36
找到原因了,当输入n太大,比如500*500时候,矩阵全是1时,会爆栈。这道题用递归做不合适啊
点赞 回复 分享
发布于 2018-09-09 17:43
我也是。。
点赞 回复 分享
发布于 2018-09-09 12:37
me too
点赞 回复 分享
发布于 2018-09-09 12:51
题目的M和矩阵大小不同,可能是出题人员打错啦。。
点赞 回复 分享
发布于 2018-09-09 12:56
请仔细看说明,说了一定是数组越界了?
点赞 回复 分享
发布于 2018-09-09 12:58
我也是....
点赞 回复 分享
发布于 2018-09-09 13:51
同。 听说矩阵的维度长宽不一定一样,坑
点赞 回复 分享
发布于 2018-09-09 14:00
我还没见过这题拿JAVA过的老哥
点赞 回复 分享
发布于 2018-09-09 15:33
我也是 80%
点赞 回复 分享
发布于 2018-09-09 15:55
你试试1000×1000全是一的矩阵看看
点赞 回复 分享
发布于 2018-09-09 16:05

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务