Java 这个洪水填充算法有什么问题?

Java 这个洪水填充算法有什么问题?,java,algorithm,recursion,flood-fill,Java,Algorithm,Recursion,Flood Fill,给定一个图片数组,代码应该返回分隔区域的数量和最大区域的大小 颜色表示为整数(0表示白色。白色区域不计数) m和n分别是行和列的# 比如说, m = 6, n = 4 1 1 1 0 1 2 2 0 1 0 0 1 0 0 0 1 0 0 0 3 0 0 0 3 应该返回[4,5],因为有4个独立的区域,最大的区域包含5个区域 另一个例子: 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 这个应该返回[2,6] public int max = 0; pub

给定一个图片数组,代码应该返回分隔区域的数量和最大区域的大小

颜色表示为整数(0表示白色。白色区域不计数)

m和n分别是行和列的#

比如说,

m = 6, n = 4 
1 1 1 0
1 2 2 0
1 0 0 1
0 0 0 1
0 0 0 3
0 0 0 3
应该返回
[4,5]
,因为有4个独立的区域,最大的区域包含5个区域

另一个例子:

1 1 1 0
1 1 1 0
0 0 0 1
0 0 0 1
0 0 0 1
这个应该返回
[2,6]

public int max = 0;
public int[] solution(int m, int n, int[][] picture) {
    // answer[0] = numberOfArea
    // answer[1] = maxSizeOfOneArea
    int[] answer = new int[2];

    for (int i = 0; i < m; i++){
        for (int j = 0; j < n; j++){
            if (picture[i][j] != 0){
                max = 0;
                floodFill(i, j, picture[i][j], picture);
                if (max > answer[1])   answer[1] = max;
                answer[0]++;
            }
        }
    }
    return answer;
}

public void floodFill(int i, int j, int num, int[][] picture){
    if (i < 0 || j < 0 || i >= picture.length || j >= picture[0].length || picture[i][j] != num)
        return;
    max++;
    picture[i][j] = 0;
    floodFill(i - 1, j, num, picture);
    floodFill(i + 1, j, num, picture);
    floodFill(i, j - 1, num, picture);
    floodFill(i, j + 1, num, picture);
}
public int max=0;
公共int[]解决方案(int m、int n、int[][]图片){
//答案[0]=区域编号
//答案[1]=maxSizeOfOneArea
int[]答案=新的int[2];
for(int i=0;i答案[1]),答案[1]=最大值;
回答[0]++;
}
}
}
返回答案;
}
公共空隙漫灌(int i、int j、int num、int[][]图片){
如果(i<0 | | j<0 | | i>=picture.length | | j>=picture[0]。length | | picture[i][j]!=num)
返回;
max++;
图片[i][j]=0;
洪水填充(i-1,j,数量,图片);
洪水填充(i+1,j,数量,图片);
洪水填充(i,j-1,数量,图片);
洪水填充(i,j+1,数量,图片);
}
我尝试了多个测试用例,它通过了所有测试,但当我提交时失败了


我遗漏了哪些边缘案例?

您发布的链接似乎位于注册过程的后面。你能解释一下这项任务吗?如果它有图片可以帮助理解问题,你能把它们添加到这里吗?很抱歉,我更改了链接。你知道为什么它失败了吗?暂停?错误的结果?有没有可能出现堆栈溢出错误?您是否尝试过一个100×100的样本,所有样本都填充了一个?是的,堆栈或队列(因为顺序不重要)应该可以。