news 2026/4/16 10:46:08

算法-广度优先搜索-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/4/16 10:41:57

LobeChat数据安全合规声明

LobeChat 数据安全合规架构深度解析 在企业加速拥抱大模型的今天&#xff0c;一个看似简单的问题却成了落地的关键障碍&#xff1a;我们能放心让员工把内部文档、客户数据甚至源代码丢进聊天框吗&#xff1f;尤其是当这些对话要经过第三方云服务时&#xff0c;合规风险往往成为…

作者头像 李华
网站建设 2026/4/15 14:45:56

LobeChat支持哪些大语言模型?一文看懂所有兼容性细节

LobeChat支持哪些大语言模型&#xff1f;一文看懂所有兼容性细节 在AI助手日益普及的今天&#xff0c;越来越多用户不再满足于单一模型、固定界面的聊天工具。面对OpenAI、Claude、通义千问等层出不穷的大模型&#xff0c;如何在一个统一平台中自由切换、灵活调用&#xff0c;成…

作者头像 李华
网站建设 2026/4/12 0:10:41

彼得林奇的“反向思维“在牛市中的应用

彼得林奇的"反向思维"在牛市中的应用 关键词&#xff1a;彼得林奇、反向思维、牛市、投资策略、股票市场 摘要&#xff1a;本文聚焦于彼得林奇的“反向思维”在牛市中的应用。首先介绍了背景信息&#xff0c;包括目的、预期读者、文档结构和相关术语。接着阐述了核心…

作者头像 李华
网站建设 2026/4/15 16:10:31

ClickHose和Hive的对比与选择

前言 上文提到最近在搭建ClickHouse&#xff0c;基本上可以正常使用了&#xff0c;不过各项指标还得观察一段时间&#xff0c;毕竟硬盘资源虽然相对便宜用多了也扛不住&#xff0c;在选择将打点数据进行迁移的时候&#xff0c;主要有 ClickHouse 和 Hive 两个备选项&#xff0…

作者头像 李华
网站建设 2026/4/13 19:20:41

LobeChat负载均衡部署实践:应对高并发访问

LobeChat 负载均衡部署实践&#xff1a;应对高并发访问 在企业级 AI 应用日益普及的今天&#xff0c;一个看似简单的聊天界面背后&#xff0c;往往承载着成千上万用户的实时交互请求。以 LobeChat 为代表的开源智能对话前端&#xff0c;因其美观的 UI 和强大的多模型支持能力&a…

作者头像 李华
网站建设 2026/4/11 11:02:31

LobeChat澄清公告拟稿工具

LobeChat&#xff1a;构建私有化AI助手的现代化框架 在企业智能化浪潮席卷各行各业的今天&#xff0c;一个现实问题愈发凸显&#xff1a;如何在享受大语言模型强大能力的同时&#xff0c;兼顾数据安全、系统集成与用户体验&#xff1f;市面上不乏API调用工具和简单聊天界面&am…

作者头像 李华