头条笔试

请问下大家,第二题这样什么只能过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

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务