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

算法-岛屿数量

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

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

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

输入:grid = [["1","1","1","1","0"],["1","1","0","1","0"],["1","1","0","0","0"],["0","0","0","0","0"]
]
输出:1
输入:grid = [["1","1","0","0","0"],["1","1","0","0","0"],["0","0","1","0","0"],["0","0","0","1","1"]
]
输出:3

代码实现:

class Solution {public int numIslands(char[][] grid) {int res = 0;for (int r = 0; r < grid.length; r++) {for (int c = 0; c < grid[0].length; c++) {if (grid[r][c] == '1') {dfs(grid, r, c);res++;}}}return res;}private void dfs(char[][] grid, int r, int c) {if (!isInGrid(grid, r, c)) {return;}// if (grid[r][c] == '2') {//     return;// }if (grid[r][c] == '0') {return;}grid[r][c] = '0';dfs(grid, r + 1, c);dfs(grid, r - 1, c);dfs(grid, r, c + 1);dfs(grid, r, c - 1);}private boolean isInGrid(char[][] grid, int r, int c) {return r >= 0 && c >= 0 && r < grid.length && c < grid[0].length;}
}

原题链接:力扣

视频讲解:岛屿数量_哔哩哔哩_bilibili

http://www.lryc.cn/news/111768.html

相关文章:

  • Crescent QuickPak Crack
  • 六、ESP32数码管显示数字
  • 【Kubernetes】当K8s出现问题时,从哪些方面可以排查
  • [ MySQL ] — 库和表的操作
  • Hive常见面试题
  • 【单片机】晨启科技,酷黑版,密码锁
  • 常见监控网络链路和网络设备的方法
  • C#控制台程序+Window增加右键菜单
  • 【Docker】Docker+Zipkin+Elasticsearch+Kibana部署分布式链路追踪
  • 【小沐学C++】C++ 基于CMake构建工程项目(Windows、Linux)
  • 计算机视觉与图形学-神经渲染专题-ConsistentNeRF
  • 初级算法-其他
  • Containerd的两种安装方式
  • Android学习之路(1) 文本设置
  • Docker相关命令与入门
  • 如何配置一个永久固定的公网TCP地址来SSH远程树莓派?
  • Kubernetes架构和工作流程
  • C语言赋值号的运算顺序
  • fishing之第四篇使用案例一模拟登陆口
  • CS 144 Lab Six -- building an IP router
  • edge://settings/defaultbrowser default ie
  • Centos7安装jdk8教程——rpm安装
  • Node.js-path模块操作路径的基本使用
  • 油猴脚本:验证码识别辅助器
  • 【力扣】24. 两两交换链表中的节点 <栈>
  • C#中控件的invoke方法
  • x光下危险物品/违禁物品目标识别的模型训练与推理代码
  • 基于Matlab实现图像融合技术(附上多个仿真源码+数据)
  • 国家级与省级开发区设立超长时间段数据(1970-2022年)
  • 数据结构 10-排序4 统计工龄 桶排序/计数排序(C语言)