From af0ac3a040899f8e90bb5f0ec9295b68e958da57 Mon Sep 17 00:00:00 2001 From: linlihong <747682928@qq.com> Date: Tue, 3 Sep 2024 11:40:56 +0800 Subject: [PATCH] 2024/9/3 Hot100 graph --- .../java/com/cool/hot100/graph/Num200.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/com/cool/hot100/graph/Num200.java diff --git a/src/main/java/com/cool/hot100/graph/Num200.java b/src/main/java/com/cool/hot100/graph/Num200.java new file mode 100644 index 0000000..aec30f0 --- /dev/null +++ b/src/main/java/com/cool/hot100/graph/Num200.java @@ -0,0 +1,45 @@ +package com.cool.hot100.graph; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/09/03/11:24 + * DayNumber 2 + * Hard 2 + * Level ? + */ + +public class Num200 { + + public int numIslands(char[][] grid) { + int res = 0; + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[i].length; j++) { + if (grid[i][j] == '1') { + res++; + dfs(grid, i, j); + } + } + } + return res; + } + + private void dfs(char[][] grid, int x, int y) { + if (!isInArea(grid, x, y)) { + return; + } + if (grid[x][y] != '1') { + return; + } + grid[x][y] = '2'; + dfs(grid, x + 1, y); + dfs(grid, x, y + 1); + dfs(grid, x, y - 1); + dfs(grid, x - 1, y); + } + + private boolean isInArea(char[][] grid, int x, int y) { + return x >= 0 && y >= 0 && x < grid.length && y < grid[0].length; + } +}