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

力扣HOT100之图论:200. 岛屿数量


这道题虽然在力扣上没做过,但是之前刷代码随想录的时候在卡码网上刷过,属于是图论的入门模板题,可以参考我之前的这篇博客,里面的思路写的还是挺详细的。我们需要定义一个方向数组,对应着4个移动方向,另外,我们还需要定义dfs函数来探索岛屿,在地图上移动的过程中,当我们遇到一块从未遇到的陆地时,我们就调用dfs函数来探索这块陆地,dfs函数的作用就是将当前陆地所在的岛屿全部探索出来,因此,在主函数中,但凡遇到新的陆地,那一定是新的岛屿上的陆地,直接将岛屿数量+1即可。

class Solution {
public:int numIslands(vector<vector<char>>& grid) {int result = 0;//定义四个搜索方向vector<vector<int>> dirs = {  //定义4个搜索方向{0, 1},  //向右{0, -1}, //向左{-1, 0}, //向上{1, 0}   //向下};vector<vector<bool>> visited(grid.size(), vector<bool>(grid[0].size(), false));//定义深度优先搜索函数auto dfs = [&] (this auto&& dfs, vector<vector<char>>& grid, vector<vector<bool>>& visited, int x, int y) -> void{//输入参数分别为:陆地和水的矩阵、已经探索过的陆地,当前位置的x,y坐标for(auto dir : dirs){int next_x = x + dir[0];int next_y = y + dir[1];if((next_x < 0 || next_x >= grid.size()) || next_y < 0 || next_y >= grid[0].size())continue;   //访问越界,直接跳过//到达新的陆地if(!visited[next_x][next_y] && grid[next_x][next_y] == '1'){visited[next_x][next_y] = true;dfs(grid, visited, next_x, next_y);}}};for(int i = 0; i < grid.size(); i++){for(int j = 0; j < grid[0].size(); j++){if(!visited[i][j] && grid[i][j] == '1'){dfs(grid, visited, i, j);result++;}}}return result;}
};

相关文章:

  • 解决MybatisPlus使用Druid1.2.11连接池查询PG数据库报Merge sql error的一种办法
  • 九州未来十三载:开源赋能 智启未来
  • [C语言实战]如何封装 JNI 实现 Java 与 C 的高效交互?原理详解 + 代码实战(附完整测试步骤)
  • Tailwind css实战,基于Kooboo构建AI对话框页面(一)
  • uniapp图片下载(微信H5可用、小程序应该也通用)
  • 【uniapp】 iosApp开发xcode原生配置项(iOS平台Capabilities配置)
  • uniapp编译小程序,不支持:class语法
  • Linux--初识文件系统fd
  • uniapp实现得到本地系统目录文件,获取文件信息
  • SQL SERVER中实现类似LEAST函数的功能,返回多列数据中的最小值
  • OpenGL ES 基本基本使用、绘制基本2D图形
  • 电脑 IP 地址修改工具,轻松实现异地登陆
  • 线性回归中涉及的数学基础
  • unity控制相机围绕物体旋转移动
  • Jenkins构建信息收集脚本详解:打造全面的CI/CD监控体系
  • 公有云AWS基础架构与核心服务:从概念到实践
  • 什么是 AWS Migration Evaluator?
  • AWS云与第三方通信最佳实践:安全、高效的数据交互方案
  • Azure 公有云基础架构与核心服务:从基础到实践指南
  • AWS関連職種向け:日本語面接QA集
  • 东莞南城做网站/网络营销的实现方式包括
  • 武汉专业建站网/微软bing搜索引擎
  • 西安疫情最新数据消息今天/杭州seo联盟
  • 一站式服务平台登录/宁波seo排名外包公司
  • 六十岁一级a做爰片免费网站/百度seo怎么做网站内容优化
  • 杨庄网站建设/新品怎么推广效果最好