Number of Islands
题目地址:
https://leetcode.com/problems/number-of-islands/#/description
题目:
解题思路:
这道题主要就是用dfs,如果遇到'1', 那么就将其设为'0', 然后向四个方向做dfs。
代码:
Follow up:
count islands的变种,需要找湖中心的岛的个数(不和boundary接壤)。
解题思路:这里可以先将boundary进行一个dfs,然后再按照之前的解法来做一遍。
https://leetcode.com/problems/number-of-islands/#/description
题目:
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
解题思路:
这道题主要就是用dfs,如果遇到'1', 那么就将其设为'0', 然后向四个方向做dfs。
代码:
public int numIslands(char[][] grid) { if(grid == null || grid.length == 0 || grid[0].length == 0){ return 0; } int row = grid.length, col = grid[0].length; int count = 0; for(int i = 0; i <row; i++){ for(int j = 0; j < col; j++){ if(grid[i][j] == '1'){ count++; helper(grid, i, j); } } } return count; } private void helper(char[][] grid, int i, int j){ if(i < 0 || i >= grid.length || j < 0 || j >= grid[0].length){ return; } if(grid[i][j] == '1'){ grid[i][j] = '0'; helper(grid, i + 1, j); helper(grid, i - 1, j); helper(grid, i, j + 1); helper(grid, i, j - 1); } }
Follow up:
count islands的变种,需要找湖中心的岛的个数(不和boundary接壤)。
解题思路:这里可以先将boundary进行一个dfs,然后再按照之前的解法来做一遍。

Comments
Post a Comment