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

leetcode hot100刷题日记——15.岛屿数量

在这里插入图片描述
解答一:

class Solution {
public:void dfs(vector<vector<char>>& grid,int r,int c){int row=grid.size();int col=grid[0].size();grid[r][c]='0';if(r-1>=0&&grid[r-1][c]=='1'){dfs(grid,r-1,c);//上}if(r+1<row&&grid[r+1][c]=='1'){dfs(grid,r+1,c);//下}if(c-1>=0&&grid[r][c-1]=='1'){dfs(grid,r,c-1);//左}if(c+1<col&&grid[r][c+1]=='1'){dfs(grid,r,c+1);//右}}int numIslands(vector<vector<char>>& grid) {//方法一:深度优先搜索//二维网格看成无向图,竖直或水平相邻的1之间有边相连。//如果一个位置为 1,则以其为起始节点开始进行深度优先搜索。在深度优先搜索的过程中,每个搜索到的 1 都会被重新标记为 0。//最终岛屿数量就是我们进行深度优先搜索的次数int row=grid.size();if(row==0){return 0;}int col=grid[0].size();int res=0;for(int i=0;i<row;i++){for(int j=0;j<col;j++){if(grid[i][j]=='1'){res++;dfs(grid,i,j);}}}return res;}
};

时间复杂度和空间复杂度均为O(MN)

解答二:

class Solution {
public:int numIslands(vector<vector<char>>& grid) {//方法二:广度优先搜索//依旧是队列和置0思想int row=grid.size();if(row==0){return 0;}int col=grid[0].size();queue<pair<int,int>>Q;int res=0;for(int i=0;i<row;i++){for(int j=0;j<col;j++){if(grid[i][j]=='1'){grid[i][j]='0';Q.push({i,j});res++;//把这个岛屿的所有位置探完while(!Q.empty()){auto cur=Q.front();Q.pop();int cur_row=cur.first;int cur_col=cur.second;if(cur_row-1>=0&&grid[cur_row-1][cur_col]=='1'){Q.push({cur_row-1,cur_col});grid[cur_row-1][cur_col]='0';}if(cur_row+1<row&&grid[cur_row+1][cur_col]=='1'){Q.push({cur_row+1,cur_col});grid[cur_row+1][cur_col]='0';}if(cur_col-1>=0&&grid[cur_row][cur_col-1]=='1'){Q.push({cur_row,cur_col-1});grid[cur_row][cur_col-1]='0';}if(cur_col+1<col&&grid[cur_row][cur_col+1]=='1'){Q.push({cur_row,cur_col+1});grid[cur_row][cur_col+1]='0';}}}}}return res;}
};

时间复杂度和空间复杂度均为O(MN)

http://www.xdnf.cn/news/630415.html

相关文章:

  • unordered_set与unordered_map实现详解剖析
  • 《100天精通Python——基础篇 2025 第20天:Thread类与线程同步机制详解》
  • PyLink 使用指南
  • AVL树简介与部分实现
  • C++篇——C++11的更新内容
  • 模型各个参数详解
  • Aciviti工作流
  • 【栈OJ题解】有效的括号
  • 6个月Python学习计划 Day 3
  • 力扣热题——查找包含给定字符的单词
  • 多模态智能体架构
  • 236.二叉树的最近公共祖先
  • Day35打卡 @浙大疏锦行
  • 深度解析NL2SQL:从语义理解到工程实践的全链路探索
  • DC-DC电路的自举电容电路原理
  • Linux(7)——进程(概念篇)
  • 介绍一下什么是反射(面试题详细讲解)
  • VBA 读取指定范围内的单元格数据,生成csv文件
  • 英语学习5.24
  • Java中是值传递还是引用传递 ?
  • vue2中el-table 实现前端分页
  • 5.Java 面向对象编程入门:类与对象的创建和使用​
  • uint8_t是什么数据类型?
  • WSL 基础命令
  • 整平机实战手册:从参数调试到工艺优化的全流程指南
  • “天启” AI 技术演进任重道远
  • 为什么我输入对了密码,还是不能用 su 切换到 root?
  • 推荐系统里真的存在“反馈循环”吗?
  • WordPress多语言插件安装与使用教程
  • 2025年电工杯数学建模B题【垃圾运输】原创论文分享