0
点赞
收藏
分享

微信扫一扫

LeetCode - 1905 统计子岛屿

慎壹 2022-02-03 阅读 57

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution {
    boolean[][] visit;
    public int countSubIslands(int[][] grid1, int[][] grid2) {
      int m = grid2.length;
      int n = grid2[0].length;
      visit = new boolean[m][n];
      int ans = 0;
      for(int i=0;i < m;i++){
          for(int j = 0;j < n;j++){
              if(visit[i][j] == false && grid2[i][j] == 1)
              {
                 //System.out.println(i+","+j);
                 boolean flag = dfs(grid1,grid2,i,j);
                 if(flag == true)
                    ans += 1;
              }
          }
      }
      return ans;
    }
    public boolean dfs(int[][] grid1,int[][] grid2,int i,int j){
         visit[i][j] = true;
         int m = grid2.length;
         int n = grid2[0].length;
         boolean flag1 = true;
         boolean flag2 = true;
         boolean flag3 = true;
         boolean flag4 = true;
         boolean flag5 = true;
         if(grid1[i][j] == 0)
            flag1 = false;
         if(i+1 < m && visit[i+1][j] == false && grid2[i+1][j] ==1){
             flag2 = dfs(grid1,grid2,i+1,j);
         }
         if(i-1 >=0 && visit[i-1][j] == false && grid2[i-1][j] ==1){
             flag3 = dfs(grid1,grid2,i-1,j);
         }
         if(j-1 >= 0 && visit[i][j-1] == false && grid2[i][j-1] ==1){
             flag4 = dfs(grid1,grid2,i,j-1);
         }
         if(j+1 < n && visit[i][j+1] == false && grid2[i][j+1] ==1){
             flag5 = dfs(grid1,grid2,i,j+1);
         }
         if(flag1 == true && flag2 == true && flag3 == true && flag4 == true && flag5 == true)
           return true;
         else
           return false;
    }
}
举报

相关推荐

0 条评论