题目描述很显然,这题是一个很经典的深广度优先问题,在这里我们主要讲广度优先,因为在Python中,在利用栈–深度优先,队列–广度优先的时候,其实原理是差不多的,只是**pop()**的位置不一样。解题思路什么叫广度优先搜索,就是以一个节点为初始节点,将此节点所能遍历的位置都遍历一遍,可以类比树的层次遍历。具体怎么做呢,直接甩代码,因为这是这类问题解决的模板,只要认真思考,掌握了,下次就可以直接写了
转载 2024-06-26 23:03:03
19阅读
岛屿问题为代表的网格类DFS问题(Python) 问题链接参考链接:力扣在 LeetCode 中,「岛屿问题」是一个系列系列问题,比如:200. 岛屿数量695. 岛屿的最大面积463. 岛屿的周长1905. 统计子岛屿1254. 统计封闭岛屿的数目面试题 16.19. 水域大小130. 被围绕的区域面试题 08.10. 颜色填充以上是我目前做到的岛屿类题目系列题。以上的解题方法都是基
找到一个入口,ans++,进入一个入口后,就把所有能访问的位置的is_visited都置为true。访
原创 2023-04-16 08:04:15
222阅读
。如果没有岛屿,则返回面积为 0 。示例 1:输入: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0
原创 2021-12-13 07:34:22
85阅读
岛屿的最大面积题目函数原型边界判断算法设计:求最大的联通分量个数算法设计:Flood Fill算法算法设计:并查集  题目给定一个包含了一些 0 和 1 的非空二维数组 grid。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的
原创 2023-06-05 16:37:02
114阅读
题目:原题链接(中等) 标签:数组、广度优先搜索、深度优先搜索 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(N×M)O(N×M)O(N×M) O(N×M)O(N×M)O(N×M) 168ms (36.22%) Ans 2 (Python) Ans 3 (Python) 解法一: class Solution: def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
题目:原题链接(中等)标签:数组、广度优先搜索、深度优先搜索解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N×M)O(N×M)O(N×M)O(N×M)O(N×M)O(N×M)168ms (36.22%)Ans 2 (Python)Ans 3 (Python)解法一:class Solution: def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
题目解题思路代码优化代码优秀提交学习toc 题目解题思路代码优化代码优秀提交学习 题目 给定一个包含了一些 0 和 1 的非空二维数组 grid 。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都 ...
转载 2021-04-24 21:43:00
217阅读
2评论
最新更新请见:https://yanjia.me/zh/2019/02/...Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.) You may assum
转载 2023-05-14 10:28:55
78阅读
题目描述解题思路本题的核心解题思路是使用DFS,所谓的DFS就是递归加标记,符合条件的元素遍历过后将其标记为已经遍历过,在本题中我们无需使用哈希表进行标记,只需将遍历过的位置变为0即可。定义二维数组的行数,即grid的长度。定义二维数组的列数,即grid[0]的长度。二层循环遍历每一个元素,不断更新最大值。将当前位置和行列数投入DFS函数中,首先进行边界条件的判断,如果不符合则返回0,如果符合则将其标记为0,表示已经遍历过,然后递归上下左右四个方向进行判断。var maxAreaO
原创 2021-12-16 15:17:17
292阅读
思路:其实就是求最大连通块。乍一看,想到的是用并查集来做元素合并,但实际实现起来比较复杂,而且时间效率也不是很高。换一种思路,可以直接用DFS,深搜每个点出发,能扩展出的最大的面积即可,每搜一个点,就把这个点置为0,可以保证之后不会被重复搜到。class Solution { int[] dx = {1, -1, 0, 0}; int[] dy = {0, 0, 1, -1}; public int maxAreaOfIsland(int[][] grid) { i
原创 2022-04-18 15:28:39
115阅读
class Solution { public int maxAreaOfIsland(int[][] grid) { /** dfs做法还是 */ int res=0; for(int i=0;i<grid.length;i++){ for(int j=0;j<grid[0].length;j++){ if(grid[i][j]==1)...
原创 2023-03-02 18:57:46
58阅读
题目描述解题思路本题的核心解题思路是使用DFS,所谓的DFS就是递归加标记,符合条件的元素遍历过后将其标记为已经遍历过,在本题中我们无需使用哈希表进行标记,只需将遍历过的位置变为0即可。
原创 2022-01-17 11:10:46
164阅读
文章目录floodfill问题——岛屿的最大面积问题描述思路代码扩展floodfill问题——岛屿的最大面积问题描述题目来自Leetcode695题给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你
原创 2021-07-12 11:17:53
403阅读
 下面这题我刚开始一直以为是求图的连通分量的个数,弄了好久发现总是有问题,后来才发现不是连通分量的题型,连通分量求的是顶点的被分成多少块,下面这种题目是一给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1: 输入:
岛屿的最大面积给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,0,0,0,0,0,0,0
原创 2021-05-12 17:24:26
190阅读
1.题目:给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿面积是岛上值
原创 2023-08-18 23:49:20
114阅读
【题目描述】给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿面积是岛上
原创 2023-04-23 19:54:01
379阅读
给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里
原创 2024-05-29 10:39:27
25阅读
岛屿问题一题目链接463. 岛屿的周长题目描述解题思路求岛屿的周长其实有很多种方法,如果用 DFS 遍历来求的话,有一种很简单的思路:岛屿的周长就是岛屿方格和非岛屿方格相邻的边的数量。注意,这里的非岛屿方格,既包括水域方格,也包括网格的边界。我们可以画一张图,看得更清晰:AC代码class Solution { int ans = 0; int dir[][] = {{0,1},{
转载 2024-06-08 16:20:57
51阅读
  • 1
  • 2
  • 3
  • 4
  • 5