提交代码:
class Solution {
public int maxAreaOfIsland(int[][] grid){
int n = grid.length;
int m = grid[0].length;
int[] count = new int[1];
int max=0,temp=0;
for (int i = 0;i<n;i++){
for (int j = 0;j<m;j++){
if (grid[i][j]==1){
count[0] = 0;
dfs(grid,i,j,count);
if (count[0]>max){
max = count[0];
}
}
}
}
return max;
}
public void dfs(int[][] a,int x,int y,int[] count){
if (x < 0 ||x >=a.length||y>=a[0].length|| y < 0 || a[x][y] == 0||a[x][y]=='A') {
return;
}
a[x][y] = 'A';
count[0]++;
dfs(a, x + 1, y,count);
dfs(a,x-1,y,count);
dfs(a,x,y+1,count);
dfs(a,x,y-1,count);
}
}
编译器能运行代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int m = input.nextInt();
int[][] grid = new int[n][m];
for (int i = 0;i<n;i++){
for (int j = 0;j<n;j++){
grid[i][j]=input.nextInt();
}
}
Main zui = new Main();
System.out.println(zui.maxAreaOfIsland(grid));
}
public int maxAreaOfIsland(int[][] grid){
int n = grid.length;
int m = grid[0].length;
int[] count = new int[1];
int max=0,temp=0;
for (int i = 0;i<n;i++){
for (int j = 0;j<m;j++){
if (grid[i][j]==1){
count[0] = 0;
dfs(grid,i,j,count);
if (count[0]>max){
max = count[0];
}
}
}
}
return max;
}
public void dfs(int[][] a,int x,int y,int[] count){
if (x < 0 ||x >=a.length||y>=a[0].length|| y < 0 || a[x][y] == 0||a[x][y]=='A') {
return;
}
a[x][y] = 'A';
count[0]++;
dfs(a, x + 1, y,count);
dfs(a,x-1,y,count);
dfs(a,x,y+1,count);
dfs(a,x,y-1,count);
}
}