LeetCode题解(0694):不同岛屿的数量(Python)
发布日期:2021-06-29 20:09:28
浏览次数:3
分类:技术文章
本文共 2152 字,大约阅读时间需要 7 分钟。
题目:(中等)
标签:哈希表、图、广度优先搜索、深度优先搜索
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N × M ) O(N×M) O(N×M) | O ( N × M ) O(N×M) O(N×M) | 236ms (75.76%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution: def numDistinctIslands(self, grid: List[List[int]]) -> int: visited = set() islands = set() size1, size2 = len(grid), len(grid[0]) for i1 in range(size1): for i2 in range(size2): if grid[i1][i2] == 0 or (i1, i2) in visited: continue land, min1, min2, max1, max2 = { (i1, i2)}, i1, i2, i1, i2 pos_list = collections.deque([(i1, i2)]) while pos_list: i3, i4 = pos_list.popleft() if i3 + 1 < size1 and grid[i3 + 1][i4] == 1 and (i3 + 1, i4) not in land: land.add((i3 + 1, i4)) pos_list.append((i3 + 1, i4)) max1 = max(max1, i3 + 1) if i4 + 1 < size2 and grid[i3][i4 + 1] == 1 and (i3, i4 + 1) not in land: land.add((i3, i4 + 1)) pos_list.append((i3, i4 + 1)) max2 = max(max2, i4 + 1) if i3 - 1 >= 0 and grid[i3 - 1][i4] == 1 and (i3 - 1, i4) not in land: land.add((i3 - 1, i4)) pos_list.append((i3 - 1, i4)) min1 = min(min1, i3 - 1) if i4 - 1 >= 0 and grid[i3][i4 - 1] == 1 and (i3, i4 - 1) not in land: land.add((i3, i4 - 1)) pos_list.append((i3, i4 - 1)) min2 = min(min2, i4 - 1) island = [] for i3 in range(min1, max1 + 1): row = [] for i4 in range(min2, max2 + 1): if (i3, i4) in land: row.append("1") else: row.append("0") island.append("".join(row)) island = " ".join(island) visited |= land islands.add(island) return len(islands)
转载地址:https://dataartist.blog.csdn.net/article/details/109837125 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月17日 13时42分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
shell高效获取分割字符串的方法?
2019-04-30
Linux Shell编程变量赋值和引用
2019-04-30
计算机专业推荐书籍
2019-04-30
程序员的成长之路
2019-04-30
linux下CPU温度监测
2019-04-30
java数组查找元素索引,无需排序
2019-04-30
QT 多线程程序设计
2019-04-30
Qt 4.8.4 & Qt Creator 2.6.1 安装和配置(Windows)
2019-04-30
Qt使用自定义类型信号槽注册问题
2019-04-30
mysql远程数据库打开很慢的问题
2019-04-30
Anroid Studio工具UI设计默认切换焦点顺序原则
2019-04-30
Qt数据库操作 连接SQLite和MySQL数据库实例
2019-04-30
Qt关于mysql数据库断开重连的问题
2019-04-30
修改root登录用户名减少阿里云Linux主机“被暴力破解”警告
2019-04-30
linux下RPM工具的使用
2019-04-30
QTableWidget常用使用总结(转)
2019-04-30
dynamic_cast
2019-04-30
如何将QT应用程序打包发布
2019-04-30
Qt在Windows数据库的连接
2019-04-30
Qt远程连接MySql数据库
2019-04-30