https://www.kakaocode.com/tryouts/1353/intro
给定一个图片数组,代码应该返回分隔区域的数量和最大区域的大小。
颜色表示为整数(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);
}
我尝试了多个测试用例并且全部通过,但是当我提交时失败了。
我遗失了哪些边缘案例?