题解 | #岛屿数量#
岛屿数量
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); } } } } }