dfs的第一题

被边界和0包围的1才是岛屿,问题就是分理出连续的1

思路是遍历数组数岛屿,dfs四个方向,遇到1后把周围连续的1置零,代表一个岛屿。

/*
思路是:遍历二维数组,遇到1就把周围连续的1变成0,res+1,然后继续遍历,直到结束
周围连续1置零用的是dfs,向四个位置搜索,遇到0返回
*/
public int numIslands(char[][] grid) {
if (grid.length==0) return 0;
int r = grid.length;
int c = grid[0].length;
int res = 0;
//遍历数组
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if (grid[i][j]=='1')
{
res++;
//进行置零操作
dfs(grid,i,j,r,c);
}
}
}
return res;
}
public void dfs(char[][] grid,int i,int j,int r,int c)
{
//出界和遇0返回
if (i<0||j<0||i>=r||j>=c||grid[i][j]!='1') return;
//置零
grid[i][j]='0';
//把周围连续的置零
dfs(grid,i-1,j,r,c);
dfs(grid,i+1,j,r,c);
dfs(grid,i,j-1,r,c);
dfs(grid,i,j+1,r,c);
}

最新文章

  1. 《IT蓝豹》吹雪花demo,学习android传感器
  2. 2016暑假多校联合---Counting Intersections
  3. mysql 2003 10038 连接不上的解决
  4. 蓝桥杯——FJ字符串
  5. C#常用集合的使用
  6. javascript基础-语法
  7. 解决mydql执行sql文件时报Error: Unknown storage engine &#39;InnoDB&#39;的错误。
  8. arcgis 加载png图片实现图片跟随地图缩放 和图片的动态播放
  9. SSM 设置静态资源处理
  10. 【python】多进程与mongo
  11. angular 2 - 005 路由实现机制
  12. More is better
  13. 10 种机器学习算法的要点(附 Python 和 R 代码)
  14. Analyze a docker instance start failure
  15. JVM内存管理--GC算法详解
  16. dblink(转)
  17. 利用jenkins打造通过自定义参数更新svn 指定文件任务
  18. hdu1358 kmp的next数组
  19. 用Micro:bit播放生日快乐歌
  20. Redux 处理异步 Action

热门文章

  1. 软件工程与UML第三次作业
  2. kafka监听出现的问题,解决和剖析
  3. JZOJ【NOIP2012模拟8.9】2020.10.5 T1
  4. JZOJ8月5日提高组反思
  5. PyQt(Python+Qt)学习随笔:QListWidget获取当前选中项的selectedItems方法
  6. PyQt(Python+Qt)学习随笔:QColumnView的resizeGripsVisible属性
  7. 自动化运维工具之Puppet master/agent模型、站点清单和puppet多环境设定
  8. Oracle10g安装
  9. Robot framework 环境搭建+图标处理
  10. 【Dotnet9-01】从0开始搭建开源项目-lqclass.com