美文网首页
岛屿的个数

岛屿的个数

作者: Sczlog | 来源:发表于2018-12-17 13:05 被阅读3次

    题目

    public class Solution {
        /**
         * @param grid: a boolean 2D matrix
         * @return: an integer
         */
        public int numIslands(boolean[][] grid) {
            // write your code here
            int sum = 0;
            for(int x = 0;x<grid.length;x++){
                for(int y = 0 ; y<grid[x].length;y++){
                    if(grid[x][y]){
                        sum++;
                        grid[x][y] = false;
                        removeSame(grid,x,y);
                    }
                }
            }
            return sum;
        }
        
        public void removeSame(boolean[][] grid,int x, int y){
            for(int i = x+1;i<grid.length;i++){
                if(grid[i][y]){
                    grid[i][y] = false;
                    removeSame(grid,i,y);
                }else{
                    break;
                }
            }
            for(int i = x-1;i>=0;i--){
                if(grid[i][y]){
                    grid[i][y] = false;
                    removeSame(grid,i,y);
                }else{
                    break;
                }
            }
            for(int i = y+1;i<grid[x].length;i++){
                if(grid[x][i]){
                    grid[x][i] = false;
                    removeSame(grid,x,i);
                }else{
                    break;
                }
            }
            for(int i = y-1;i>=0;i--){
                if(grid[x][i]){
                    grid[x][i] = false;
                    removeSame(grid,x,i);
                }else{
                    break;
                }
            }
        }
    }
    

    思路:搜索到陆地(1)以后向前后以及下方遍历直至搜到海(0),将搜索到的陆地全部置为0并且将岛屿数量+1。

    相关文章

      网友评论

          本文标题:岛屿的个数

          本文链接:https://www.haomeiwen.com/subject/aobqkqtx.html