思路

找到每个陆地的四周的陆地

代码

  1. var maxAreaOfIsland = function(grid) {
  2. let rowLen = grid.length, colLen = grid[0].length;
  3. let res = 0;
  4. for(let i = 0; i < rowLen; i++) {
  5. for(let j = 0; j < colLen; j++) {
  6. if(grid[i][j] == 1) {
  7. res = Math.max(res, dfs(grid, i, j));
  8. }
  9. }
  10. }
  11. return res;
  12. };
  13. function dfs(grid, row, col) {
  14. if (row < 0 || row >= grid.length ||col < 0 ||col >= grid[0].length || !grid[row][col]) {
  15. return 0
  16. }
  17. grid[row][col] = 0
  18. return 1 + dfs(grid, row+1, col) + dfs(grid, row-1, col) + dfs(grid, row, col - 1) + dfs(grid, row, col + 1)
  19. }

复杂度分析

时间复杂度 day42.[搜索]. 695. 岛屿的最大面积 - 图1#card=math&code=O%28Row%20%2A%20Col%29)
空间复杂度 day42.[搜索]. 695. 岛屿的最大面积 - 图2#card=math&code=O%28Row%20%2A%20Col%29)