[LeetCodeの練習] [中] 200。島の数

[LeetCodeの練習] [中] 200。島の数

200.島の数

200.島の数

アルゴリズムのアイデア:DFS、2次元配列

トピック:

ここに画像の説明を挿入します

Javaコード

class Solution {
    
    
    int m = 0;//长
	int n = 0;//宽
	public int numIslands(char[][] grid) {
    
    
		int res = 0;
		m = grid.length;
		n = grid[0].length;
		for (int i = 0; i < m; i++) {
    
    
			for (int j = 0; j < n; j++) {
    
    
				if (grid[i][j] == '1') {
    
    //深度优先遍历,DFS次数就是岛屿数量
					dfs(grid, i, j);
					res++;
				}
			}
		}
		return res;
    }

	private void dfs(char[][] grid, int i, int j) {
    
    
        //i,j指向的格子不存在或者是0(水)就返回
		if (i < 0 || j < 0 || i >= m || j >= n || grid[i][j] == '0') {
    
    
            return;
        }
		grid[i][j] = '0';//修改访问过的陆地,避免反复搜索
		dfs(grid, i-1, j);//向上递归
		dfs(grid, i+1, j);//向下递归
		dfs(grid, i, j-1);//向左递归
		dfs(grid, i, j+1);//向右递归
	}
}

おすすめ

転載: blog.csdn.net/qq_39457586/article/details/109748659