news 2026/8/3 3:09:58

算法-广度优先搜索-09

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法-广度优先搜索-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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/3 16:39:12

一个基于 .NET + Vue3 开源、免费、精美的通用业务型后台管理系统

致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源&#xff0c;提升开发效率与创新能力&#xff01;项目概述SimpleAdmin 是一个基于 .NET Vue3 开发的通用业务型后台管理系统&…

作者头像 李华
网站建设 2026/8/3 4:05:51

如何为LobeChat添加身份认证以保护内部AI系统安全?

如何为 LobeChat 添加身份认证以保护内部 AI 系统安全 在企业逐步将大语言模型&#xff08;LLM&#xff09;引入办公流程的今天&#xff0c;一个直观、易用的前端界面往往决定了 AI 工具能否真正落地。LobeChat 凭借其现代化的设计、对多种模型的无缝支持以及灵活的插件体系&a…

作者头像 李华
网站建设 2026/8/2 8:54:25

数据编目与元数据管理:不可不知的关系

数据编目与元数据管理&#xff1a;像图书馆管理员和藏书索引的共生密码 关键词 数据编目、元数据管理、数据治理、数据资产、元数据模型、数据目录、数据发现 摘要 你有没有过这样的经历&#xff1f;打开企业的数据平台&#xff0c;看到几百张表名像乱码的数据库表&#xff08;…

作者头像 李华
网站建设 2026/8/3 8:18:39

Safari浏览器特殊配置:iOS设备上的最佳实践

Safari浏览器特殊配置&#xff1a;iOS设备上的最佳实践 在移动互联网高度成熟的今天&#xff0c;用户早已不再满足于“能用”的网页体验——他们期待的是流畅、智能、无缝的交互。而当你的 Web 应用承载着语音识别、实时流式响应、文件上传等复杂功能时&#xff0c;一个看似普…

作者头像 李华
网站建设 2026/8/1 23:18:33

大数据升级之路 | Storm理论详解

随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍&#xff0c;比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等&#xff0c;大数据实时处理解决方案&#xff08;流计算&#xff09;的应用日趋广泛&#xff0c;目前已是分布式技术领域最新爆发点&#xff…

作者头像 李华
网站建设 2026/8/2 18:57:46

字节新论文:通过Context-Folding记忆折叠实现复杂Agent

摘要 今天一起看下字节新出论文《Scaling Long-Horizon LLM Agent via Context-Folding》。 在构建长程(Long-Horizon)Agent 时,上下文窗口的线性增长与注意力的二次方开销是制约模型推理能力与运行效率的核心瓶颈。不同于传统的 RAG 或基于摘要的被动压缩,字节提出的Cont…

作者头像 李华