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


京公网安备 11010502036488号