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. Redis深入学习笔记(五)Redis阻塞原因

    在实际使用Redis中,有时会碰到客户端timeout异常,或者没有可用连接异常等等异常,总结大概有如下原因: 内部阻塞原因: 1)大对象存取. 2)Fork阻塞. 3)Aof刷盘阻塞(距离上次刷盘大 ...

  2. 设计模式<1>------单例模式和原型模式------创建型

    原文引自:http://www.cnblogs.com/lonelyxmas/p/3720808.html 单例模式 单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并 ...

  3. linux ubuntu生成pac文件,实现代理

    sudo pip install genpac sudo pip install --upgrade genpac sudo genpac --proxy="SOCKS5 127.0.0.1 ...

  4. 让WebStrom支持SSH协议的子项目

    让WebStrom支持SSH协议的子项目 在大项目中, 经常会遇到子项目(submodule)使用ssh的情形, 但是WebStrom不直接支持它. 下面以MAC为例,在PC中的处理类似. 打开ter ...

  5. run in thread

    def run_in_thread(runnable, is_daemon=True): server_thread = Thread(target=runnable) server_thread.s ...

  6. 十进制 -> 十六进制

    x /16 依次取余 ,最先余作十六进制的最低 字节有效位,最后的余数  作最高的字节有效位,其中我们需要注意理解 的是  一个 数据的 最高字节及  内存的 高地址及低地址 更进一步的就算机器存储的 ...

  7. LeetCode 203. Remove Linked List Elements 移除链表元素 C++/Java

    Remove all elements from a linked list of integers that have value val. Example: Input: ->->-& ...

  8. 关于mysql 表导入数据

    一.实验准备: 1.实验设备:Dell laptop 7559; 2.实验环境:windows 10操作系统; 3.数据库版本:mysql 8.0; 二.实验目的: 1.将一个宠物表pet.txt文件 ...

  9. sed的替换元字符的语法

    \(和\)用于保存正则表达式的一部分,而\1和\2用于保存回调的部分. 例如: 将sample.txt,内容如下 1...........55...........1010..........1010 ...

  10. 基于HALCON的模板匹配方法总结

    注:很抱歉,忘记从转载链接了,作者莫怪.... 基于HALCON的模板匹配方法总结 很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多 ...