1020. 飞地的数量

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

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

 class Solution(object):
def numEnclaves(self, A):
if not A or not A[0]: # 处理边缘测试用例
return 0
res = 0
self.m = len(A)
self.n = len(A[0])
for i in range(self.m):
self.dfs(A, i, 0) # 从左边界遍历
self.dfs(A, i, self.n-1) # 从有边界遍历
for i in range(self.n):
self.dfs(A, 0, i) # 从上边界遍历
self.dfs(A,self.m-1, i) # 从上边界遍历
for each in A:
res += sum(each) # 统计非零元素个数
return res def dfs(self, data, i, j):
if i < 0 or i >= self.m or j < 0 or j >= self.n or data[i][j]==0:
return
data[i][j] = 0
self.dfs(data, i+1, j)
self.dfs(data, i-1, j)
self.dfs(data, i, j+1)
self.dfs(data, i, j-1)

思路2:添加辅助空间visit 。从边界出发,找出边界所能直达的1节点,然后用1的总个数减去边界直达1的个数。

时间超越100%的python用户提交,内存超越100%的python用户提交。

 class Solution(object):
def numEnclaves(self, A):
if not A or not A[0]: # 处理边缘测试用例
return 0
res = 0
self.count=0
self.m = len(A)
self.n = len(A[0])
self.index=[[0,1],[1,0],[0,-1],[-1,0]]
self.visited=[[0]*len(A[0]) for x in range(self.m)]
for i in range(self.m):
self.dfs(A, i, 0) # 从左边界遍历
self.dfs(A, i, self.n-1) # 右边界遍历
for i in range(self.n):
self.dfs(A, 0, i) # 从上边界遍历
self.dfs(A,self.m-1, i) # 从上边界遍历
for each in A:
res += sum(each) # 统计非零元素个数
return res-self.count def dfs(self, data, i, j):
if i<0 or i>=self.m or j<0 or j>=self.n or data[i][j]==0 or self.visited[i][j]==1:
return
if data[i][j] == 1:
self.visited[i][j]=1
self.count += 1
for each in self.index:
x = each[0]+i
y = j+each[1]
self.dfs(data,x,y)

回溯+DFS 强化的更多相关文章

  1. HDU 1010Tempter of the Bone(奇偶剪枝回溯dfs)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  2. POJ 3009 Curling 2.0【带回溯DFS】

    POJ 3009 题意: 给出一个w*h的地图,其中0代表空地,1代表障碍物,2代表起点,3代表终点,每次行动可以走多个方格,每次只能向附近一格不是障碍物的方向行动,直到碰到障碍物才停下来,此时障碍物 ...

  3. 回溯 DFS 深度优先搜索[待更新]

      首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权!   1.概念   回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...

  4. POJ 3009 Curling 2.0 回溯,dfs 难度:0

    http://poj.org/problem?id=3009 如果目前起点紧挨着终点,可以直接向终点滚(终点不算障碍) #include <cstdio> #include <cst ...

  5. Usaco 2.3 Zero Sums(回溯DFS)--暴搜

    Zero SumConsider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... ...

  6. UVa 291 The House Of Santa Claus——回溯dfs

    题意:从左下方的1开始,一笔画出圣诞老人的房子. #include <iostream> #include <cstring> using namespace std; ][] ...

  7. POJ 3414 dfs 回溯

    题目链接:http://poj.org/problem?id=3414 题意:三个值A, B, C, A和B是两个杯子的容量,问最短操作数使A或者B里的水量是C.有三种操作. 思路:dfs.暴力 很简 ...

  8. 图之BFS和DFS遍历的实现并解决一次旅游中发现的问题

    这篇文章用来复习使用BFS(Breadth First Search)和DFS(Depth First Search) 并解决一个在旅游时遇到的问题. 关于图的邻接表存储与邻接矩阵的存储,各有优缺点. ...

  9. nyoj 927 The partial sum problem(dfs)

    描述 One day,Tom’s girlfriend give him an array A which contains N integers and asked him:Can you choo ...

随机推荐

  1. 获取物理内存total值和used值

    1.使用 free -m 查看 2.物理内存total值 # free -m | grep Mem | awk '{print $2}' 3.物理内存used值 # free -m | grep Me ...

  2. !!!常用CSS代码

    http://www.cnblogs.com/qq21270/p/4854643.html 伪类 http://www.cnblogs.com/qq21270/p/4891167.html CSS3动 ...

  3. go-001[常用命令]

    go env GOARCH="amd64"//这台机器的cpu 架构 GOBIN="/Applications/MAMP/htdocs/go/bin"  //工 ...

  4. QPixmap 在非QtCreator环境下无法显示jpg图片

    这几天需要实现在Qt界面中显示jpg图片,于是直接将路径传给QPixmap对象,发现显示不出来. 然而在Qt SDK自带的Demo中却可以正确显示jpg图片,经搜索引擎查找发现,是自己的exe文件缺少 ...

  5. TCP协议-连接建立和释放

    三次握手: (1)客户端向服务器端TCP请求连接,向服务器端发送控制位SYN=1,序号seq=x的请求报文.(x是随机产生的,且不能为0) (2)服务器端接收到请求报文后,若同意建立连接,则向客户端发 ...

  6. android studio 运行项目时waiting for target device to come online

    cmd进入命令行,进入adb所在的目录下: 或者在Terminal中输入命令: adb kill-server adb start-server

  7. 海外aws-ubuntu-16.04系统使用ansible安装tidb

    本以为按照官方文档会比较顺利,没想到还是遇到了几个坑,毕竟pingcap不能考虑到所有问题 环境: 1.ubuntu:16.04LTS 2.python:2.7 小坑:因为第一次使用ubuntu,没想 ...

  8. java List<Map<String,Object>遍历的方法

    public static void main(String[] args) { List<HashMap<String, Object>> list = new ArrayL ...

  9. SSM商城项目(十二)

    1.   学习计划 1.购物车实现 2.未登录状态下使用购物车 3.登录状态下使用购物车 2.   购物车的实现 2.1. 功能分析 1.购物车是一个独立的表现层工程. 2.添加购物车不要求登录.可以 ...

  10. java.lang.RuntimeException: Class "org.apache.maven.cli.MavenCli$CliRequest" not found

    IDEA版本:14.1 maven版本:apache-maven-3.3.9-bin IDEA的maven项目,在pom文件执行Maven--Reimport,引入jar包依赖,报错java.lang ...