题解 | #岛屿数量#

岛屿数量

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);
                }
            }
        }
    }

}

全部评论

相关推荐

01-02 00:50
三峡大学 Java
程序员牛肉:这简历一出手就离失业不远了。 作为一家公司来讲,我如果要招日常实习生,那我对实习生最基本的要求就是要能干活,毕竟你就待三四个月,谁会留心培养你? 那么除了院校之外,最重要的就是项目和实习了。没有实习的话项目就好好搞。 但是你说你这个项目吧:课程作业管理系统和TMS运输管理系统。这两个基本就和闹着玩差不多。 你作为一个想要应聘Java开发实习生的人,对后端的理解还仅仅停留在:“使用mapper和sql映射”,“使用SQL进行多表调用”,“基于MySQL简历表结构”,“基于Spring boot完成CURD操作”这种玩具上......... 找不到后端实习的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务