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