使用递归深度搜索,检测到一个陆地点就向四周探测是否有陆地相连,全部消去成为海洋。再寻找下一个陆地。
O(n^2)了。
用例通过率: 100.00% 运行时间: 1482ms 占用内存: 13820KB。

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 计算岛屿的数量
# @param Map string字符串一维数组 表示地图。
# @return int整型
#
class Solution:
    def solve(self, Map):
        count = 0
        x = len(Map)
        for i in range(0, x):
            Map[i] = list(Map[i]) # str类型不可变
        y = len(Map[0])
        for i in range(0, x):
            for j in range(0, y):
                if Map[i][j] == 'x':
                    count += 1
                    recurve(Map, i, j, x, y)
        return count


def recurve(Map, i, j, x, y):
    if Map[i][j] == '.':
        return
    else:
        Map[i][j] = '.'
    if(i-1 >= 0):
        recurve(Map, i-1, j, x, y)
    if(i+1 < x):
        recurve(Map, i+1, j, x, y)
    if(j-1 >= 0):
        recurve(Map, i, j-1, x, y)
    if(j+1 < y):
        recurve(Map, i, j+1, x, y)
    return