Leetcode Number of Islands
题目地址:https://leetcode.com/problems/number-of-islands/
题目分析:
需要找出水平或者垂直相连的‘1’的个数,第一思路是递归遍历直到上下左右走没有‘1’返回,同时需要注意遍历到一个‘1’将其修改为‘0’表示已经访问过了;然后每遍历完一次即表示一个island,设置一个计数器记录遍历次数即可。
题目解答:
public class Solution { public int numIslands(char[][] grid) { if(grid == null || grid.length == 0 || grid[0].length == 0){ return 0; } int cnt = 0; 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,grid.length-1,grid[0].length - 1); cnt++; } } } return cnt; } private void dfs(char[][] grid,int i,int j,int m,int n){ if(i > m || i < 0 || j > n || j < 0 || grid[i][j] != '1') return; grid[i][j] = '0'; dfs(grid,i,j+1,m,n); dfs(grid,i,j-1,m,n); dfs(grid,i+1,j,m,n); dfs(grid,i-1,j,m,n); return; } }

浙公网安备 33010602011771号