LeetCode热题100(岛屿数量)

题目描述

给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

题解思路:

java 复制代码
class Solution {
    public int numIslands(char[][] grid) {
        int m = grid.length;
        int n = grid[0].length;
        int res = 0;
        for(int i = 0; i < m;i++){
            for(int j = 0; j < n;j++){
               if(grid[i][j] == '1'){
                  dfs(grid,i,j);
                  res++;
               }
            }
        }
        return res;
    }
    public 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);
    }
}

复盘反思:

1.对于本题没有思路,特别是图的深度优先遍历算法有点忘了。

2.图的题目要特别注意边界值的处理。

3.本题特别巧妙的处理了为'1'的情况,遍历完之后赋值为'0'。

相关推荐
世人万千丶9 分钟前
鸿蒙项目实战 - 社区活动编排板:标签云布局算法与自动换行
学习·算法·华为·harmonyos·鸿蒙
zander25812 分钟前
LeetCode 279. 完全平方数
算法·深度优先
典典分享指南1 小时前
VS Code Git 工作树:解锁多分支并行开发新体验
算法·决策树·逻辑回归·启发式算法
_Narcissus_2 小时前
枚举和模拟算法笔记
c语言·数据结构·c++·笔记·算法·模拟·枚举
天疆说2 小时前
策略的进化:从随心所欲到稳健前行
算法
冻柠檬飞冰走茶2 小时前
《数据结构实验指导-C++语言版》 在顺序表 list 中查找元素 x
开发语言·数据结构·c++·算法·list
2601_967264282 小时前
React教程全家桶实战redux+antd+React Hooks前端js视频,2025徐老师React18&19课程含项目实战(完结)
职场和发展
冻柠檬飞冰走茶2 小时前
《数据结构实验指导-C++语言版》 返回单链表 list 中第 i 个元素值
开发语言·数据结构·c++·算法·list
happyprince3 小时前
03-深刻观-CodeX哲学与升华(源码)
算法·ai编程
不会打球的王子3 小时前
Day 27:迁移学习与微调 — 站在巨人的肩膀上
算法