200. 岛屿数量 - 力扣(LeetCode) (leetcode-cn.com)

1.DFS

DFS的思路是,首先遍历整个表,找到1结果就加一,之后通过DFS将找到的1连通区域内的所有1变为0,代码如下

    public int numIslands(char[][] grid) {if(grid==null || grid.length==0){return 0;}int rowlen = grid.length;int collen = grid[0].length;int res = 0;for (int i = 0; i < rowlen; i++) {for(int j = 0;j<collen;j++){if(grid[i][j]=='1'){res++;dfs(grid,i,j,rowlen,collen);}}}return res;}private void dfs(char[][] grid, int i, int j, int rowlen, int collen) {//边界条件if(i<0 || i>=rowlen || j<0 || j>=collen || grid[i][j]=='0'){return;}grid[i][j] = '0';dfs(grid, i+1, j, rowlen, collen);dfs(grid, i-1, j, rowlen, collen);dfs(grid, i, j+1, rowlen, collen);dfs(grid, i, j-1, rowlen, collen);}

BFS利用一个队列来保存坐标,思路相似。

class Solution {public int numIslands(char[][] grid) {if(grid==null || grid.length==0){return 0;}Queue<int[]> queue = new LinkedList<>();int rowlen = grid.length;int collen = grid[0].length;int res = 0;for (int i = 0; i < rowlen; i++) {for(int j = 0;j<collen;j++){if(grid[i][j]=='1'){res++;grid[i][j] = '0';queue.add(new int[]{i,j});while(!queue.isEmpty()){int[] cur = queue.poll();if(cur[0]-1>=0 && grid[cur[0]-1][cur[1]]=='1'){grid[cur[0]-1][cur[1]]='0';queue.add(new int[]{cur[0]-1,cur[1]});}if(cur[0]+1<rowlen && grid[cur[0]+1][cur[1]]=='1'){grid[cur[0]+1][cur[1]]='0';queue.add(new int[]{cur[0]+1,cur[1]});}if(cur[1]-1>=0 && grid[cur[0]][cur[1]-1]=='1'){grid[cur[0]][cur[1]-1]='0';queue.add(new int[]{cur[0],cur[1]-1});}if(cur[1]+1<collen && grid[cur[0]][cur[1]+1]=='1'){grid[cur[0]][cur[1]+1]='0';queue.add(new int[]{cur[0],cur[1]+1});}}}}}return res;}
}

力扣200岛屿数量(DFS/BFS)相关推荐

  1. 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量

    本文讲解200. 岛屿数量问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 1 题目 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围, ...

  2. [Leedcode][JAVA][第200题][岛屿数量][DFS][BFS][并查集]

    [问题描述] 第200题 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量.岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成 ...

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

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

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

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

  5. Java岛屿数量(DFS)

    200.岛屿数量 解题思路: 来自K神 class Solution {public int numIslands(char[][] grid) {int count = 0;for(int i = ...

  6. LeetCode 200. 岛屿数量(图的遍历)

    文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或 ...

  7. Leetcode 200.岛屿数量

    Time: 20190902 Type: Medium 题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地 ...

  8. leetcode —— 200. 岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...

  9. Leetcode 200. 岛屿数量 解题思路及C++实现

    解题思路: 典型的深度优先搜索问题,跟第130题 被围绕的区域 有点像,只不过这里不仅要找出被水包围的岛屿,还要计算这些岛屿的总数. 使用深度优先搜索的方法,大循环是遍历整个grid数组(两个for循 ...

最新文章

  1. AlphaCode惊世登场!编程版“阿法狗”悄悄参赛,击败一半程序员
  2. python基础学习1-计数器实例
  3. meta http-equiv=X-UA-Compatible content=IE=edge / 的说明
  4. 【转】Java 单例模式详解
  5. CDN > 域名管理 > 访问控制 > URL鉴权配置 > URL鉴权
  6. cwntos使用不了php,centos系统不能使用yum命令怎么解决
  7. Hive 求top N
  8. PHP学习笔记五(命名空间)
  9. 基于javaswing实现PC端课堂点名程序详细设计
  10. 三种PS切图方法—简单易懂
  11. ElasticSearch索引模板(template)操作:创建、查询、修改、删除
  12. Wireshark 用户使用手册 ———— 自定义 Wireshark
  13. 不断奔跑,却忘了来时的路
  14. 水电设计院信息管理系统1.0
  15. nodejs爬虫与python爬虫_Python,Node.js 哪个比较适合写爬虫?
  16. ORA-00054: 资源正忙 解决办法
  17. 第六天 01-hydra工具windows远程桌面的密码爆破
  18. DC-DC 保护调试经验
  19. 盘后股价上涨6% 美光能否结束水逆?
  20. ArchiCAD与Revit深度对比

热门文章

  1. java viewport,viewport详解
  2. python中四则运算符号_Python-四则运算-蔡晓晴,杜婷萱
  3. 在UTU-2440上移植Qtopia4与TSLIB
  4. 小LightSwitch,别有洞天
  5. DROP SYNONYM
  6. 五分钟带你了解什么是敏捷测试
  7. SQL Server数据表中数据的增加(插入)、查询、修改、删除
  8. 2020 GDUT Rating Contest II (Div. 2) A. Fence Planning
  9. 推荐算法竞赛TOP方案合集
  10. 软件工程——头像压缩(g)