首页 > 其他 > 详细

回溯+DFS 强化

时间:2019-04-14 16:20:05      阅读:159      评论:0      收藏:0      [点我收藏+]

1020. 飞地的数量

思路:从4条边界出发,把能遍历到的1全部变成0。剩下的1就是边界所不能到达的点,统计一下1的数量即可。

解题思路:DFS。  时间超越100%python用户提交 ,内存超越84.75%的python用户提交。

 1 class Solution(object):
 2     def numEnclaves(self, A):
 3         if not A or not A[0]:  # 处理边缘测试用例
 4             return 0
 5         res = 0
 6         self.m = len(A)
 7         self.n = len(A[0])
 8         for i in range(self.m):
 9             self.dfs(A, i, 0)   # 从左边界遍历
10             self.dfs(A, i, self.n-1)  # 从有边界遍历
11         for i in range(self.n):
12             self.dfs(A, 0, i)  # 从上边界遍历
13             self.dfs(A,self.m-1, i)  # 从上边界遍历
14         for each in A:
15             res += sum(each)   # 统计非零元素个数
16         return res
17 
18     def dfs(self, data, i, j):
19         if i < 0 or i >= self.m or j < 0 or j >= self.n or data[i][j]==0:
20             return
21         data[i][j] = 0
22         self.dfs(data, i+1, j)
23         self.dfs(data, i-1, j)
24         self.dfs(data, i, j+1)
25         self.dfs(data, i, j-1)

 

回溯+DFS 强化

原文:https://www.cnblogs.com/xiaojiaojiao/p/10705392.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!