题解 | #岛屿数量#

岛屿数量

https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 判断岛屿数量
     * @param grid char字符型二维数组
     * @return int整型
     */
    public int solve (char[][] grid) {
        // write code here
        int[][] mem = new int[grid.length][grid[0].length];
        rows = grid.length;
        cols = grid[0].length;
        search(grid, mem);
        return total;
    }

    int rows = 0;
    int cols = 0;
    int total = 0;

    public void braary(int row, int col, char[][] grid, int[][] meme, int[][] trip,
                       boolean inser) {
        if (grid[row][col] == '1' ) {
            if (inser) {
                meme[row][col] = 1;
            }
            if (meme[row][col] == 0 && !inser ) {
                total++;
                meme[row][col] = 1;
            }
            if (row < rows - 1) {
                trip[row + 1][col] = 1;
                braary(row + 1, col, grid, meme, trip, true);
            }
            if (col < cols - 1) {
                trip[row][col + 1] = 1;
                braary(row, col + 1, grid, meme, trip, true);
            }
            if (col - 1 >= 0 && trip[row][col - 1] == 0) {
                trip[row][col - 1] = 1;
                braary(row, col - 1, grid, meme, trip, true);
            }

            if (row - 1 >= 0 && trip[row - 1][col] == 0) {
                trip[row - 1][col] = 1;
                braary(row - 1, col, grid, meme, trip, true);
            }
        }

    }

    public void search(char[][] grid, int[][] meme) {
        int[][] trip = new int[grid.length][grid[0].length];
        for (int i = 0; i < rows; i ++) {
            for (int j = 0; j < cols; j++) {
                if (meme[i][j] == 0) {
                    braary(i, j, grid, meme, trip, false);
                }
            }
        }
    }

}

全部评论

相关推荐

EEbond:给北邮✌️跪了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务