博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode200. Number of Islands (思路及python解法)
阅读量:2242 次
发布时间:2019-05-09

本文共 1228 字,大约阅读时间需要 4 分钟。

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

Example 1:

Input:11110110101100000000Output: 1

一道统计连通区域的题,有很强的实用性。之前在分类,图像处理等领域有所应用过。

做这道题的思路是用DFS方法,发现一处“1”后,将这个“1”所连通的所有1都找出来,并进行标记,做为其中一个island。

重点在于注意dfs所用的条件。

visited是用于判别该点是否已经在dfs过程中访问过。

在创建的时候注意先是in range(c),然后才是in range(r),这点需要注意。

而dfs的判定条件i和j的范围也需要注意。

判定的顺序也需要注意,i,j的范围正确了才能继续去判定grid[i][j]=='0' or visited[i][j]

class Solution:    def numIslands(self, grid: List[List[str]]) -> int:        if not grid:return 0        r, c = len(grid), len(grid[0])        visited = [[False for _ in range(c)] for _ in range(r)]        def dfs(i,j):            if i<0 or j<0 or i>=r or j>=c or grid[i][j]=='0' or visited[i][j]:                return            visited[i][j]=True            dfs(i+1, j)            dfs(i-1, j)            dfs(i, j+1)            dfs(i, j-1)        count=0        for i in range(r):            for j in range(c):                if not visited[i][j] and grid[i][j]=='1':                    dfs(i, j)                    count += 1        return count

 

转载地址:http://edrbb.baihongyu.com/

你可能感兴趣的文章
java比较日期大小及日期与字符串的转换【SimpleDateFormat操作实例】
查看>>
Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence
查看>>
java中System.exit()方法
查看>>
在hbase shell中过滤器的简单使用
查看>>
java静态方法和实例方法
查看>>
java多线程并发去调用一个类的静态方法,会有问题吗?
查看>>
关于JAVA中的static方法、并发问题以及JAVA运行时内存模型
查看>>
Java命令学习系列(一)——Jps
查看>>
java如何计算程序运行时间
查看>>
Java Calendar 类的时间操作
查看>>
Java]NIO:使用Channel、Charset(字符集)、使用Charset传递CharBuffer
查看>>
Eclipse下运行Maven项目提示缺少maven-resources-plugin:2.4.3
查看>>
Java 中int、String的类型转换
查看>>
比较两个JSON字符串是否完全相等
查看>>
删除JSONArray中的某个元素
查看>>
Linux下Tomcat重新启动
查看>>
使用HttpClient请求另一个项目接口获取内容
查看>>
HttpClient get和HttpClient Post请求的方式获取服务器的返回数据
查看>>
net.sf.json Maven依赖配置
查看>>
Could not initialize class net.sf.json.JsonConfig错误解决
查看>>