欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 200. 岛屿数量

200. 岛屿数量

2026/1/31 18:41:57 来源:https://blog.csdn.net/the_singular/article/details/142391022  浏览:    关键词:200. 岛屿数量

刷题刷题找工作!!!

题目链接

. - 力扣(LeetCode)

自己的思路

好难,看答案。

官方题解

突然发现其实不难,单纯地深度遍历就好了,遇到一个格子就加1,遇到遍历过的就返回。

我的疑问是什么确定我这个岛屿已经遍历完了进行下一个岛屿呢。

“噢解决了,在最初始的代码中对网格进行一个循环,遇到为1但未被遍历过就将其作为初始节点进入深搜。”

妙啊。

class Solution {int row, col;public void dfs(char[][] grid,int i, int j){if(!inArea(i, j)){return;}if(grid[i][j] == 2){return;}if(grid[i][j] == '0'){return;}// System.out.printf("i = %d, j = %d\n", i, j);grid[i][j] = 2;//将这个网格遍历理解为从二叉树到四叉树dfs(grid, i + 1, j);dfs(grid, i - 1, j);dfs(grid, i, j - 1);dfs(grid, i, j + 1);return;}public int numIslands(char[][] grid) {row = grid.length;col = grid[0].length;int num = 0;for(int i = 0; i < row; i++){for(int j = 0; j < col; j ++){if(grid[i][j] == '1'){//是陆地且未被拜访过dfs(grid, i, j);num++;}}}return num;}public boolean inArea(int i, int j){if( 0 <= i && i <= row - 1){if(0 <= j && j <= col - 1){return true;}}return false;}
}

笔者提示,一定要注意整个是个字符数组,不是Int型,因为这个答案会错误的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词