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

算法-广度优先搜索-09

力扣-真题-岛屿数量


我的想法是 初始化一个 sum代表岛屿数量,
没遍历到一个 1, sum = sum + 1
然后从这个位置开始 进行广度优先搜索 把所有相连的1 全部变成0 (原地修改)。 然后再继续向下遍历 。
就能得到所有岛屿数量了。

publicintnumIslands(char[][]grid){intsum=0;for(inti=0;i<grid.length;i++){for(intj=0;j<grid[0].length;j++){if(grid[i][j]=='0')continue;sum++;bfs(grid,i,j);}}returnsum;}publicvoidbfs(char[][]grid,inti,intj){//边界情况if(i>=grid.length||j>=grid[0].length||i==-1||j==-1||grid[i][j]=='0')return;grid[i][j]='0';//四个方向进行遍历bfs(grid,i,j+1);bfs(grid,i+1,j);bfs(grid,i-1,j);bfs(grid,i,j-1);}

嗯, 今天开始加一个环节

复杂度分析

首先空间复杂度 是 O(1) , 因为是原地修改 没有额外的存储空间浪费。
然后时间复杂度计算
咱们拆成几个部分, 首先

  • 第一个部分 肯定就是 两层 for循环遍历
    总共需要遍历 数组的数量m × 单个数组的元素数量n 此
    即 时间复杂度 在这一部分是 O(m×n)
  • 第二部分 也就是最后的一部分就是BFS 遍历
    这一部分的分析 可以这样
    如果 这个 节点是grid[x][y] = ‘0’ 啥也不用处理 O(1)
    如果 这个节点 是 grid[x][y] = ‘1’ 那个 除了 grid[x][y]置为 ‘1’外
    主要就是找相邻的‘1’置为 ‘0’ , 其实某种程度上来说, 你把其他节点 的 ‘1’ 置为 ‘0’ ,不就是帮其他节点做事吗 , 平摊下来 最多 每一个节点都把‘1’置为 ‘0’ , 也就是 在遍历 m× n的时候 顺便加一步 ‘1’置为 ‘0’ 以及 如果是 ‘0’ 跳过的判断, 这个时间复杂度 实际上是 O(1)
    当然啦, 最坏的情况下, grid[0][0】开始 bfs 会直接遍历整个图, 也就是m×n的复杂度。
    所以实际上 BFS的时间复杂度也是O(m×n)

但是这两部分的时间复杂度是分开的,互不影响,总体的时间复杂度就是O(m×n + m×n )= 2O(m×n)
常数因子忽略, 所以最终的时间复杂度就是O(m×n)

http://www.cnnetsun.cn/news/96595.html

相关文章:

  • 公司网站wordpress主题推荐
  • 金融从业者福音:LobeChat搭建合规AI分析助手
  • LobeChat科技新闻深度解读
  • LinkedIn职业建议:LobeChat撰写个人简介
  • 9 个 MBA 论文降AI工具,AI 写作优化推荐
  • 10 个高效降AI率工具,自考党必备!
  • 测试技术如何应用于股市个股的风险评测?
  • Java毕设选题推荐:基于java的畅销图书推荐系统基于springboot+vue的畅销图书推荐系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 计算机Java毕设实战-基于JavaWeb的智慧养老院管理系统的设计与实现访客记录、病历档案、入院指南、药品信息【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-基于JavaWeb的心聘求职平台的设计与实现基于springboot的人才求职招聘平台设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • LobeChat会议议程自动生成器开发
  • Python面向对象——进阶(三)
  • C语言实现图书管理系统[2025-12-17]
  • LobeChat对话摘要自动生成实践
  • 迈向价值透明:基于意义行为原生论的机器学习治理框架——一份人机协作的独立宣言
  • 企业级AI客服新选择:基于LobeChat镜像的智能对话系统搭建
  • LobeChat会员等级权益设计建议
  • LobeChat版本更新日志解读:v0.8.5新增特性一览
  • LobeChat RBAC权限模型设计
  • LobeChat董事会汇报PPT内容生成
  • 8个AI写作工具,专科生轻松搞定论文格式规范!
  • 使用 Python 动手实践全局优化方法
  • 如图,红框是新版QQ,右边是旧版QQ
  • LobeChat差分隐私保护机制设计
  • 《gdb 与 cgdb 深度解析:命令行调试的效率革命》
  • 国产时序数据库崛起:金仓凭什么在复杂场景中碾压InfluxDB
  • 脚本网页 地球演化
  • AXI-A7.4.9 Atomic transaction dependencies
  • 【AI黑科技】6.89%性能炸裂!ASFR框架让知识图谱“开天眼“,小白程序员也能玩转大模型增强技术
  • Google最新AI Agents课程全解析!337页白皮书浓缩精华,从入门到精通,手把手教你成为Agent开发大神!