Number of Islands
来源:互联网 发布:teradata数据库sql命令 编辑:程序博客网 时间:2024/06/03 19:49
Given a 2d grid map of '1'
s (land) and '0'
s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
Example 1:
11110
11010
11000
00000
Answer: 1
Example 2:
11000
11000
00100
00011
Answer: 3
题目要求,1表示小岛,0表示海,找出所有的小岛;一开始还没有思路,看了别人的博客说用dfs一下子想清楚了,用一个嵌套循环对每个点进行判断,如果当前值为1的话,那么调用bfs方法,将它连接到部分的1全部置为0, 这样在嵌套的过程中记录出现1的个数,在bfs会把它相邻的1全部去掉,所以不会出现多加或者少加的情况。
public static void main(String[] args) { NumIslands is = new NumIslands(); char[][] grid = { {'1','1','1','1','0'}, {'1','1','0','1','0'}, {'1','1','0','0','0'}, {'0','0','0','0','0'} }; System.out.println(is.numIslands(grid)); } public int numIslands(char[][] grid) { int count = 0; for(int i=0;i<grid.length;i++){ for(int j=0;j<grid[0].length;j++){ if(grid[i][j] == '1'){ //System.out.println("find 1"); count++; } bfs(i, j, grid); } } return count; } public void bfs(int i, int j, char[][] grid){ if(grid[i][j] == '1'){ grid[i][j] = '0'; if(i>0) bfs(i-1, j, grid); if(i<grid.length-1) bfs(i+1, j, grid); if(j>0) bfs(i, j-1,grid); if(j<grid[0].length-1) bfs(i, j+1, grid); }else return; }
0 0
- Number of Islands
- Number of Islands
- Number of Islands
- [LeetCode] Number of Islands
- Leetcode-Number of Islands
- Number of Islands
- Leetcode Number of Islands
- [LeetCode]Number of Islands
- Number of Islands
- Number of Islands
- [leetcode]Number of Islands
- [leetcode] Number of Islands
- leetcode Number of Islands
- leetcode:Number of Islands
- [leetcode] Number of Islands
- 200 Number of Islands
- [LeetCode] Number of Islands
- Number of Islands
- java自带的MessageDigest实现文本的md5加密算法
- MySQL基础教程
- Git 基础 - 撤消操作
- delete 和 delete []
- 八皇后问题
- Number of Islands
- addEventListener等事件监听的参数细谈
- Java读取文件内容并输出的最简单的方式之一(只需三行代码)
- 招投标领域深化改革的“长征”路途
- Java与数据库数据类型对应表
- Swift3.0语言教程获取字符
- 前端复习--Math.min.apply(Math,arr)写法的理解
- 欢迎使用CSDN-markdown编辑器
- 哈佛结构 和 冯·诺依曼结构