目录

一、题目

二、代码解析

1、BFS解法

2、DFS解法

三、解题思路(典型岛屿问题)

1、容易疏漏的点

2、尝试了一下并查集


一、题目

给你一个大小为 m x n 的二进制矩阵 grid 。

岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。

岛屿的面积是岛上值为 1 的单元格的数目。

计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。


  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 50
  • grid[i][j] 为 0 或 1

二、代码解析

1、BFS解法

class Solution:def maxAreaOfIsland(self, grid: List[List[int]]) -> int:row = len(grid)cow = len(grid[0])queue = []realmax = 0res = 0for i in range(row):for j in range(cow): #两个for循环将所有的格子都遍历一遍if grid[i][j] == 1: #找到为1的格子就广度优先遍历找到相联的1queue.append((i,j)) #加入到列表中grid[i][j] = 0  #进入了就说明他走过,应该改为0避免死循环res = 1 #进入了也得从1开始对这一整块的1计数while len(queue) > 0: #BFSnr,nc = queue.pop() #把队首pop出去,再找队首的下一级for x,y in [(nr,nc-1),(nr,nc+1),(nr-1,nc),(nr+1,nc)]: #根据上下左右查找是否为1if 0<= x < row and 0 <= y< cow and grid[x][y] == 1: #注意限制边界queue.append((x,y)) #把所有队首下一级的元组都加入grid[x][y] = 0 #走过的路设置为0res += 1 #找到一个加一个realmax = max(realmax,res) #通过寻找最大值来判断对最面积return realmax

2、DFS解法

class Solution:def maxAreaOfIsland(self, grid: List[List[int]]) -> int:row = len(grid)cow = len(grid[0])stack = []res = 0realmax = 0for p in range(row):for q in range(cow):if grid[p][q] == 1:res = 1stack.append((p,q))grid[p][q] = 0while len(stack) > 0:nr,nc = stack.pop(-1)for x,y in [(nr-1,nc),(nr+1,nc),(nr,nc+1),(nr,nc-1)]:if 0 <= x < row and 0 <= y < cow and grid[x][y] == 1:res += 1stack.append((x,y))grid[x][y] = 0nr = xnc = yrealmax = max(res,realmax)return realmax

三、解题思路(典型岛屿问题)

1、容易疏漏的点

1.1BFS

  • 找到第一个1就要加入到queue中,且把这个走过的地方设为0,且开始计数
  • 在while循环中,找到相邻的1也要加入到queue中,且走过的地方设为0,计数
  • res 和 realmax要提前先赋值

1.2 DFS

  • 找到第一个1就要加入到stack中,且把这个走过的地方设为0,且开始计数
  • 在while循环中,找到相邻的1也要加入到stack中,且走过的地方设为0,计数
  • res 和 realmax要提前先赋值
  • for循环附近的1中坚持一条路走到黑,利用当前的x和y去使得下一步去找(x,y)相邻格子,一直改变nr,nc的值直到所有格子被走完

2、尝试了一下并查集

并查集更时候查有多少个小岛(全面的概况出现小岛数量)

BFS、DFS更适合找小岛里面的最大面积(精细到局部上)

【力扣】695岛屿的最大面积相关推荐

  1. 岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积

    思路参考上文: 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量 本文讲解695. 岛屿的最大面积问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 题目 给定一个包含了一些 0 和 1 ...

  2. 力扣 695. 岛屿的最大面积

    一.题目描述 给你一个大小为 m x n 的二进制矩阵 grid. 岛屿是由一些相邻的 1(代表土地)构成的组合,这里的相邻要求两个 1 必须在水平或者竖直的四个方向上相邻.你可以假设 grid 的四 ...

  3. 力扣(Leetcode)695. 岛屿的最大面积(Java)带注释

    leetcode刷题695. 岛屿的最大面积 1.题目描述 2.解法 1.DFS(深度优先搜索) 2.DFS + 栈 1.题目描述 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一 ...

  4. 岛屿问题 通用解-463.岛屿周长-200.岛屿数量-695.岛屿的最大面积-827.最大人工岛

    文章目录 岛屿问题 如何在网格上做DFS(通用解) 463.岛屿的周长 题目 题解 -通用模板 题解2 200.岛屿数量 题目 题解 695.岛屿的最大面积 题目 题解 827.最大人工岛 题目 题解 ...

  5. 每日一道leetcode(python)695. 岛屿的最大面积

    每日一道leetcode(python)695. 岛屿的最大面积 2021-08-21 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的 ...

  6. LeetCode 695. 岛屿的最大面积【c++/java详细题解】

    目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 给定一个包含了一些 0 和 1 的非空二维数组 grid . 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相 ...

  7. LeetCode 695.岛屿的最大面积

    LeetCode 695.岛屿的最大面积 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的 ...

  8. 695.岛屿的最大面积

    给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的二维数组中 ...

  9. LeetCode 695. 岛屿的最大面积(图的BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS广度优先搜索 2.2 DFS深度优先搜索 1. 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直 ...

  10. 695. 岛屿的最大面积(适合 初学者 理解的java版BFS)

    文章目录 BFS 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻.你可以 ...

最新文章

  1. DymSLAM: 基于几何和运动分割的4D动态场景重建( RAL)
  2. 53.C#--多线程
  3. 2072. Kirill the Gardener 3
  4. 【Android】OpenGL ES for Android 教程1 - HelloWorld
  5. Ubuntu 12.10 安装 JDK1.7.0_15
  6. centos7下别名(alias)的特殊用法
  7. gtk linux 升级_Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)
  8. 浅谈Linux协议和组成
  9. python卸载错误_卸载python后导致yum无法使用的解决办法 - Python - 服务器之家
  10. 简单的maven自定义webapp目录
  11. ZZULIOJ1041-1045Python解法
  12. ubuntu计算机名用户名,修改ubuntu的用户名(注意用户名和主机名的区别)
  13. Maya:解决丢失的贴图和引用
  14. 百度App性能优化工具篇 - Thor原理及实践
  15. 把图片放大后还很清晰的办法
  16. 【全套资料.zip下载】数电课设-走廊声光控延时节能灯电路设计【Multisim仿真+报告+讲解视频.zip下载】
  17. 神经网络研究主要内容,神经网络的起源和发展
  18. Mr.Fang出品:银企互联(NC模式)开发者版本(.NET WebService中间件,Java、PHP、Python等跨语言测试通过)
  19. 第十二篇:从生稣出熟稣,从熟稣出醍醐-再读内核驱动设计目标
  20. camtasia studio2022电脑屏幕录像录屏剪辑

热门文章

  1. java web之javascript(js)解析
  2. 如何通过外网(互联网)访问本地计算机里的网站?Ngrok(内网穿透)帮你解决!
  3. 梯度,也即该物理参数的变化率,导数
  4. C# LINQ源码分析之ToList()
  5. 01-第一个裸机程序led及其引申
  6. Linux 命令详解之df命令
  7. Win11下载与安装
  8. 美国撞击小行星的宇宙飞船成功改变行星轨道
  9. NodeJS C++ Addons基础
  10. 迈瑞医疗招聘-软件测试工程师