Number of Big Islands

http://www.lintcode.com/zh-cn/problem/number-of-big-islands/
请参阅 Number of Islands(岛屿的个数)

public class Solution {
    private int res = 0;

    /*
     * @param : a 2d boolean array
     * @param : an integer
     * @return: the number of Islands
     */
    public int numsofIsland(boolean[][] grid, int k) {
        // Write your code here
        int count = 0;
//        和上个问题类似,只是需要在修改的同时把数量记录下来,最后有效的时候才计算
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                if (grid[i][j]) {
                    res = 0;
                    tree(i, j, grid);
                    if (res >= k) {
                        count++;
                    }
                }
            }
        }
        return count;
    }

    private void tree(int i, int j, boolean[][] grid) {
        if (i >= 0 && i < grid.length && j >= 0 && j < grid[0].length) {
            if (grid[i][j]) {
                res++;
                grid[i][j] = false;
                tree(i - 1, j, grid);
                tree(i + 1, j, grid);
                tree(i, j - 1, grid);
                tree(i, j + 1, grid);
            }
        }

    }
};

你可能感兴趣的:(Number of Big Islands)