递归和回溯_leetcode-floodfill

class Solution(object):
def numIslands(self, grid):
"""
:type grid: List[List[str]]
:rtype: int
"""


self.res = 0
if not grid :
return self.res

self.drection = [[-1,0],[0,1],[1,0],[0,-1]]

self.m = len(grid)

self.n = len(grid[0])

self.visit = [[False for i in range(self.n)] for i in range(self.m)]

for x in range(self.m):
for y in range(self.n):
if grid[x][y] == "1" and self.visit[x][y] == False:

self.res += 1
self.dfs(grid,x,y)

return self.res

def inArea(self,x,y):
return x >= 0 and x < self.m and y >= 0 and y < self.n

def dfs(self,grid,x,y):

self.visit[x][y] = True

for item in self.drection:
newX = x + item[0]
newY = y + item[1]

if self.inArea(newX,newY) and self.visit[newX][newY] == False and grid[newX][newY] == "1":
self.dfs(grid,newX,newY)

return

转载于:https://www.cnblogs.com/lux-ace/p/10557048.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值