53. LeetCode 695. 岛屿的最大面积

2018-11-04  本文已影响24人  月牙眼的楼下小黑

未访问过岛屿结点 出发进行 深度优先搜索,访问过的岛屿结点设为 0. 递归函数 dfs(i,j) 返回的是从岛屿结点( grid[i][j] == 1)出发搜索到的岛屿结点数目

import numpy as np
class Solution(object):
    def maxAreaOfIsland(self, grid):
        if not grid:
            return 0

        rows, cols = len(grid), len(grid[0])

        def dfs(i, j):  # 只对岛屿结点(grid[i][j]==1)进行搜索, 纪录从该节点出发搜索到的岛屿结点数
            grid[i][j] = 0
            num = 1
            if 0<= i - 1< rows and 0 <= j < cols and grid[i-1][j]:
                num += dfs(i-1, j)
            if 0<= i < rows and 0 <= j + 1 < cols and grid[i][j + 1]:
                num += dfs(i, j + 1)
            if 0<= i + 1< rows and 0 <= j < cols and grid[i + 1][j]:
                num += dfs(i + 1, j)
            if 0<= i  < rows and 0 <= j - 1 < cols and grid[i][j-1]:
                num += dfs(i, j - 1)
            return num

        areas = []
        for i in range(rows):
            for j in range(cols):
                if(grid[i][j]):
                    areas.append(dfs(i,j))
        if not areas:
            return 0
        return max(areas)

暂略。

上一篇 下一篇

猜你喜欢

热点阅读