使用递归深度搜索,检测到一个陆地点就向四周探测是否有陆地相连,全部消去成为海洋。再寻找下一个陆地。
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