题目:
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入: 11110 11010 11000 00000 输出: 1
示例 2:
输入: 11000 11000 00100 00011 输出: 3
解题思路:
对地图进行BFS搜索,计算岛屿的数量。如果直接判断的话,相当于每个点都要对自己的上下左右进行比较,会出现很多重复判断的情况。
代码实现:
class Solution { public int numIslands(char[][] grid) { int count = 0; for (int i = 0; i < grid.length; i ++) { for (int j = 0; j < grid[i].length; j ++) { if (grid[i][j] == '1') { count ++; bfs(i, j, grid); } } } return count; } private void bfs(int x, int y, char[][] grid) { if (x < 0 || y < 0 || x >= grid.length || y >= grid[0].length || grid[x][y] == '0') return; grid[x][y] = '0'; bfs(x + 1, y, grid); bfs(x - 1, y, grid); bfs(x, y + 1, grid); bfs(x, y - 1, grid); } }
本文介绍了一种使用广度优先搜索(BFS)算法来计算由'1'(陆地)和'0'(水)组成的二维网格中岛屿数量的方法。通过示例详细展示了如何遍历网格,标记已访问过的陆地并计算岛屿总数。
659

被折叠的 条评论
为什么被折叠?



