Skip to content

695. 岛屿的最大面积

给你一个大小为m x n的二进制矩阵grid

岛屿 是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个1必须在水平或者竖直的四个方向上相邻。你可以假设grid的四个边缘都被0(代表水)包围着。

岛屿的面积是岛上值为1的单元格的数目。

计算并返回grid中最大的岛屿面积。如果没有岛屿,则返回面积为0

解题思路

递归+沉没

参考答案
ts
function maxAreaOfIsland(grid: number[][]): number {
  let max = 0;

  function sink(i, j): number {
    if (grid?.[i]?.[j] === 1) {
      grid[i][j] = 0;
      return (
        1 +
        sink(i + 1, j) +
        sink(i - 1, j) +
        sink(i, j + 1) +
        sink(i, j - 1)
      );
    }
    return 0;
  }

  for (let i = 0; i < grid.length; ++i) {
    for (let j = 0; j < grid[i].length; ++j) {
      if (grid[i][j] === 1) {
        max = Math.max(max, sink(i, j));
      }
    }
  }
  return max;
}