news 2026/1/12 13:46:56

算法-广度优先搜索-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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/17 2:50:55

Ascend C算子与PyTorch生态无缝融合:自定义算子开发实战指南

目录 &#x1f4cb; 摘要 &#x1f3d7;️ 技术原理 2.1 架构设计理念解析&#xff1a;CANN的七层软件栈哲学 2.2 核心算法实现&#xff1a;Ascend C向量化编程范式 2.3 性能特性分析&#xff1a;达芬奇架构的硬件优势 &#x1f527; 实战部分 3.1 完整可运行代码示例&a…

作者头像 李华
网站建设 2025/12/17 2:50:29

ML.NET实现人名、地名的提取

ML.NET 可以通过文本分类或命名实体识别&#xff08;NER&#xff09;任务实现人名、地名的提取。以下是使用 ML.NET 实现该功能的核心思路和步骤&#xff1a;核心原理提取人名、地名属于命名实体识别&#xff08;NER&#xff09; 任务&#xff0c;本质是对文本中的每个词或字符…

作者头像 李华
网站建设 2025/12/17 2:50:15

教育场景下的AI助教实践:基于LobeChat的智能问答系统

教育场景下的AI助教实践&#xff1a;基于LobeChat的智能问答系统 在一所普通高中的晚自习教室里&#xff0c;一名学生正盯着物理作业本上的一道力学题发愁。他打开学校内网的“AI学习助手”网页&#xff0c;上传了题目截图&#xff0c;输入&#xff1a;“请帮我分析这个物体的受…

作者头像 李华
网站建设 2026/1/4 17:41:30

超详细图文教程:Windows环境部署LobeChat全过程

Windows 环境部署 LobeChat 全过程&#xff1a;从零开始搭建你的私有化 AI 聊天平台 在今天&#xff0c;一个能与大语言模型顺畅对话的界面&#xff0c;几乎成了每个开发者、产品经理甚至普通用户的刚需。我们手握 GPT、通义千问、Llama3 这样的强大模型&#xff0c;却常常被原…

作者头像 李华
网站建设 2025/12/17 2:49:00

大数据领域 ClickHouse 的资源管理策略

大数据领域 ClickHouse 的资源管理策略关键词&#xff1a;大数据、ClickHouse、资源管理策略、性能优化、资源分配摘要&#xff1a;本文聚焦于大数据领域中 ClickHouse 的资源管理策略。随着大数据应用的不断发展&#xff0c;ClickHouse 作为一款高性能的列式数据库管理系统&am…

作者头像 李华
网站建设 2026/1/11 21:16:44

LobeChat能否对接Google Sheets?电子表格自动化更新

LobeChat能否对接Google Sheets&#xff1f;电子表格自动化更新 在日常办公中&#xff0c;你是否曾为重复填写销售报表、手动同步会议纪要或逐条录入客户信息而感到繁琐&#xff1f;尤其是在多平台间切换时——浏览器开十几个标签页&#xff0c;一边听语音记录一边敲键盘&#…

作者头像 李华