力扣刷题——200. 岛屿数量

200. 岛屿数量

搜索

使用DFS,每次找到岛屿就将其设置为海水

package leetcode;

public class T200 {

	class Solution {
    	int ans = 0;
    	//定义方向偏移量
    	int[][] dirs = {{0, 1},{1, 0},{0, -1},{-1, 0}};
		public int numIslands(char[][] grid) {
	    	//查找所有可以dfs的点
	    	for (int i = 0; i < grid.length; ++i) {
	    		for (int j = 0; j < grid[0].length; ++j) {
	    			if (grid[i][j] == '1') {
	    				dfs(grid, i, j);
	    				ans++;
	    			}
	    		}
	    	}
	    	
	    	return ans;
	    }
		
		public void dfs(char[][] grid, int x, int y) {
			//检查是否超出边界
			if (x <0 || y < 0 || x >= grid.length || y >= grid[0].length || grid[x][y] == '0') {
				return;
			}
			//当前位置改为海水
			grid[x][y] = '0';
			//查找四个方向
			for (int i = 0; i < 4; ++i) { 
				dfs(grid, x + dirs[i][0], y + dirs[i][1]);
			}
		}
	}
}

posted on 2023-02-25 12:33  pumpkinsBig  阅读(20)  评论(0)    收藏  举报

导航