200. Number of Islands

该题目要算出矩阵中有多少个数值为“1”的数据块。主要思路是对矩阵进行遍历,遇到“1”的元素的时候,对元素进行深度遍历,并将“1”元素改为非“1”。

代码如下:

 1 class Solution {
 2     public int numIslands(char[][] grid) {
 3         int res = 0;
 4         if(grid == null || grid.length == 0){
 5             return res;
 6         }
 7         
 8         int m = grid.length, n = grid[0].length;
 9         
10         for( int i = 0 ; i < m ; i++ ){
11             for( int j = 0 ; j < n ; j++){
12                 if(grid[i][j] == '1'){
13                     res ++;
14                     occupyIsland(grid, i, j);
15                 }
16             }
17         }
18         
19         return res;
20     }
21     
22     private void occupyIsland(char[][] grid, int i, int j){
23         grid[i][j] = '2';
24         
25         int m = grid.length, n = grid[0].length;
26         if( i+1 < m && grid[i+1][j] == '1'){
27             occupyIsland(grid, i+1, j);
28         }
29         if( j+1 < n && grid[i][j+1] == '1'){
30             occupyIsland(grid, i, j+1);
31         }
32         if( i-1 >= 0 && grid[i-1][j] == '1'){
33             occupyIsland(grid, i-1, j);
34         }
35         if( j-1 >= 0 && grid[i][j-1] == '1'){
36             occupyIsland(grid, i, j-1);
37         }        
38     }
39 }

END

猜你喜欢

转载自www.cnblogs.com/sssysukww/p/8989501.html