当前位置: 首页 > news >正文

岛屿问题(dfs)

leetcode 200 岛屿数量

class Solution {
    public int numIslands(char[][] grid) {
    int count = 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);
          count++;
        }
      }
    }
    return count;
  }

  private void dfs(char[][] grid, int i, int j) {
    if(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] == '0'){
      return;
    }
    grid[i][j] = '0';
    dfs(grid,i+1,j);
    dfs(grid,i,j+1);
    dfs(grid,i-1,j);
    dfs(grid,i,j-1);
  }
}

leetcode 695 岛屿的最大数量

class Solution {
    public int maxAreaOfIsland(int[][] grid) {
        if (grid == null) {
            return 0;
        }
        int res = 0;
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                int area = dfs(grid, i, j);
                res = Math.max(area, res);
            }
        }
        return res;
    }

    private int dfs(int[][] grid, int i, int j) {
        if (i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] == 0) {
            return 0;
        }
        grid[i][j] = 0;
        return 1 + dfs(grid, i + 1, j) 
        + dfs(grid, i, j + 1) 
        + + dfs(grid, i - 1, j) 
        + + dfs(grid, i, j - 1);
    }
}

leetcode 463 岛屿的周长

class Solution {
    public int islandPerimeter(int[][] grid) {
        if (grid == null) {
            return 0;
        }
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                if (grid[i][j] == 1) {
                    return dfs(grid, i, j);
                }
            }
        }
        return 0;
    }

    private int dfs(int[][] grid, int i, int j) {
        if (i < 0 || j < 0 || i >= grid.length || j >= grid[0].length) {
            return 1;
        }
        if (grid[i][j] == 0) {
            return 1;// 对应海洋
        }
        if (grid[i][j] != 1) {// 当前是已经遍历过的陆地格子
            return 0;
        }
        grid[i][j] = 2;
        return dfs(grid, i + 1, j) + dfs(grid, i, j + 1) + dfs(grid, i - 1, j) + dfs(grid, i, j - 1);
    }
}

相关文章:

  • 首届电视剧制作产业大会龚宇受瞩目,河南郑州(短剧)黄帝影视城盛情相邀
  • 微信小程序模仿快播标签云滚动特效
  • 1.16作业
  • ASUS/华硕幻15 GU502G 原厂Win10系统 工厂文件 带ASUS Recovery恢复
  • 重构建筑未来:中建海龙MiC建筑技术开启智慧建造新篇章
  • 网络运维学习笔记 013网工初级(HCIA-Datacom与CCNA-EI)DHCP动态主机配置协议(此处只讲华为)
  • 第4章 信息系统架构(五)
  • MyBatis配置
  • 面试基础--微服务架构:如何拆分微服务、数据一致性、服务调用
  • 网络安全-js安全知识点与XSS常用payloads
  • 树与并查集,区间dp,树形dp
  • 2025.2.23机器学习笔记:PINN文献阅读
  • 【react18】如何使用useReducer和useContext来实现一个todoList功能
  • 通过Selenium实现UI自动化校验输入的数据是否完整有效方式
  • Unity Mixamo模型更好的适配角色模型
  • 【Gin-Web】Bluebell社区项目梳理2:JWT-Token认证
  • 【深度学习】自然语言处理(NLP)-语音识别-WaveNet
  • 虚函数与多态
  • 蓝桥云客 路径之谜
  • 算法——Boyer-Moore算法
  • php租车网站源码/百度热搜广告位
  • 购物网站用那个软件做/百度指数分析大数据
  • 襄阳做网站/seo关键词排名优化联系方式
  • 建设商务网站的步骤/推广网址
  • 网站升级改版需要多久/西安seo排名公司
  • 网站过期了/网站开发报价方案