leetcode-162周赛-1254-统计封闭岛屿数量
题目描述:


自己的提交:
class Solution:
def closedIsland(self, grid: List[List[int]]) -> int:
def dfs(grid,r,c):
nr = len(grid)
nc = len(grid[0])
if r<0 or c<0 or r==nr or c==nc or grid[r][c]==1:
return
grid[r][c] = 1
dfs(grid,r-1,c)
dfs(grid,r+1,c)
dfs(grid,r,c-1)
dfs(grid,r,c+1)
if not grid:
return 0
nr = len(grid)
nc = len(grid[0])
for i in (0,nr-1):
for j in range(nc):
if grid[i][j]==0:
dfs(grid,i,j)
for i in range(nr):
for j in (0,nc-1):
if grid[i][j]==0:
dfs(grid,i,j)
num = 0
for i in range(nr):
for j in range(nc):
if grid[i][j]==0:
num += 1
dfs(grid,i,j)
return num
另:
class Solution(object):
def closedIsland(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
n, m = len(grid), len(grid[0])
land = set((i,j)
for i in xrange(n)
for j in xrange(m)
if grid[i][j] == 0)
seen = set()
r = 0
for x in xrange(n):
for y in xrange(m):
if (x, y) in seen: continue
if (x, y) not in land: continue
q = set()
q.add((x, y))
f = True
while q:
f = f and all(0<i<n-1 and 0<j<m-1 for i, j in q)
seen.update(q)
q = set((ii, jj)
for i, j in q
for ii, jj in ((i-1, j), (i+1, j), (i, j-1), (i, j+1))
if (ii, jj) in land and (ii, jj) not in seen)
r += f
return r
leetcode-162周赛-1254-统计封闭岛屿数量的更多相关文章
- LEETCODE 1254 统计封闭岛屿的数目 Number of Closed Islands
地址 https://leetcode-cn.com/contest/weekly-contest-162/problems/number-of-closed-islands/ 有一个二维矩阵 gri ...
- Leetcode 1254. 统计封闭岛屿的数目
题目: 有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 ). 我们从一块陆地出发,每次可以往上下左右 4 个方向相邻区域走,能走到的所有陆地区域,我们将其称为一座 ...
- 【LeetCode】200. Number of Islands 岛屿数量
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目地址:https://le ...
- [LeetCode] 305. Number of Islands II 岛屿的数量之二
A 2d grid map of m rows and n columns is initially filled with water. We may perform an addLand oper ...
- Leetcode之深度优先搜索(DFS)专题-200. 岛屿数量(Number of Islands)
Leetcode之深度优先搜索(DFS)专题-200. 岛屿数量(Number of Islands) 深度优先搜索的解题详细介绍,点击 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计 ...
- LeetCode 200:岛屿数量 Number of Islands
题目: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. Given ...
- [LeetCode]695. 岛屿的最大面积(DFS/BFS)、200. 岛屿数量(DFS/BFS待做/并差集待做)
695. 岛屿的最大面积 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被 ...
- Leetcode题目200.岛屿数量(BFS+DFS+并查集-中等)
题目描述: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 ...
- Java实现 LeetCode 200 岛屿数量
200. 岛屿数量 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. ...
随机推荐
- Python3.5-20190518-廖老师-自我笔记-面向对象
面向对象编程,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把老师分为一类,把学生分为一类.具体到某一个学生就是 这类中的一个具体对象,对象的 ...
- python用户名密码限定次数登录
""" 1. 用户输入帐号密码进行登陆 2. 用户信息保存在文件内 3. 用户密码输入错误三次后锁定用户"""" test.txt ...
- securityDemo依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit ...
- 硬盘监控和分析工具:Smartctl
https://linux.cn/article-4682-1.html Smartctl(S.M.A.R.T 自监控,分析和报告技术)是类Unix系统下实施SMART任务命令行套件或工具,它用于打印 ...
- ofbiz:找不到org.ofbiz.widget.ContentWorkerInterface的类文件
ofbiz编译报错: 找不到org.ofbiz.widget.DataResourceWorkerInterface的类文件 找不到org.ofbiz.widget.ContentWorkerInte ...
- 极限IO优化
namespace IO{ #define BUF_SIZE 100000 #define OUT_SIZE 100000 #define ll long long //fread->read ...
- JDK各个版本比较
JDK5 自动装箱与拆箱: 枚举 静态导入,如:import staticjava.lang.System.out 可变参数(Varargs) 内省(Introspector) 主要用于操作JavaB ...
- mysql 用户权限管理详细
用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user ...
- cassandra百亿级数据库迁移实践
迁移背景 cassandra集群隔段时间出现rt飙高的问题,带来的影响就是请求cassandra短时间内出现大量超时,这个问题发生已经达到了平均两周一次的频率,已经影响到正常业务了.而出现这些问题的原 ...
- Jmeter 5.1命令行执行bat文件
一.编写run_jmeter,bat @echo off::设置参数::参考命令:jmeter -n -t d:\123.jmx -l result.jtl -e -o d:\report\repor ...