news 2026/9/3 4:23:23

算法-广度优先搜索-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/9/2 15:15:48

LobeChat能否用于生成SQL语句?数据库操作辅助工具

LobeChat能否用于生成SQL语句&#xff1f;数据库操作辅助工具 在数据驱动决策的时代&#xff0c;几乎每个产品迭代、运营分析甚至技术排查都离不开对数据库的查询。但现实是&#xff0c;不是每个人都能熟练写出一条精准高效的 SQL——产品经理卡在多表关联逻辑&#xff0c;前端…

作者头像 李华
网站建设 2026/9/2 17:59:37

SWOT分析自动生成:LobeChat助力战略制定

SWOT分析自动生成&#xff1a;LobeChat助力战略制定 在企业战略会议中&#xff0c;你是否经历过这样的场景&#xff1f;团队围坐一圈&#xff0c;白板上潦草地写着“优势”“劣势”“机会”“威胁”&#xff0c;每个人轮流发言&#xff0c;观点零散、重复甚至矛盾。几个小时过去…

作者头像 李华
网站建设 2026/9/2 21:46:06

商业模式画布填充:LobeChat理清商业逻辑

商业模式画布填充&#xff1a;LobeChat理清商业逻辑 在AI技术加速落地的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;的能力早已不是瓶颈。真正制约其价值释放的&#xff0c;是用户与模型之间的交互鸿沟——再强大的模型&#xff0c;如果界面难用、集成困难、扩展受…

作者头像 李华
网站建设 2026/9/2 1:30:08

随机深度优先搜索(Randomized DFS)算法原理

随机深度优先搜索是深度优先搜索的变种&#xff0c;通过在每一步随机选择邻接节点来增加路径的不可预测性。该算法天然适合生成或解决迷宫问题&#xff0c;因其倾向于生成长而曲折的路径。核心特点&#xff1a;使用栈&#xff08;显式或隐式&#xff09;实现回溯随机选择邻接节…

作者头像 李华
网站建设 2026/9/3 0:52:04

计算机Java毕设实战-基于javaweb的在线图书借阅管理系统图书馆在线借阅管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 15:45:17

计算机Java毕设实战-基于JavaWeb的家装一体化平台室内设计、装修施工、建材选购【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华