原题链接
typescript
function maxAreaOfIsland(grid: number[][]): number {
const dfs = (i: number, j: number) => {
// 判定区域是否有效
if(i >= grid.length || j >= grid[0].length || j < 0 || i < 0 || grid[i][j] != 1) {
return 0;
}
grid[i][j] = 2;// 剪枝 标记当前区域已被访问过
let area = 1; // 当前区域的面积
area += dfs(i + 1, j);
area += dfs(i - 1, j);
area += dfs(i, j + 1);
area += dfs(i, j - 1);
return area;
}
let answer = 0;
for(let i = 0; i < grid.length; i++) {
for(let j = 0; j < grid[0].length; j++) {
if(grid[i][j] === 1) {
answer = Math.max(answer, dfs(i, j));
}
}
}
return answer;
};