news 2026/2/21 16:00:45

力扣-省份数量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣-省份数量

思路分析

  1. BFS 解决该问题的核心是找连通分量的数量:
  2. 初始化:用访问数组标记每个城市是否被遍历过,初始全为未访问;省份计数器初始为 0。
    • 遍历所有城市:对于每个未被访问的城市,启动一次 BFS:
    • 省份计数器 + 1(代表发现一个新省份);
    • 将该城市加入队列,标记为已访问;
  3. 层序遍历队列中的城市,找到所有与之直接 / 间接相连的城市,标记为已访问(归入当前省份)。
    终止条件:所有城市遍历完毕,计数器即为省份数量。

代码实现

publicintfindCircleNum(int[][]isConnected){// 城市数量intn=isConnected.length;// 访问标记数组,用于记录每个城市是否被访问过boolean[]visited=newboolean[n];// 定义队列用于bfs遍历Deque<Integer>queue=newLinkedList<>();// 定义相连的城市数量intprovinceCount=0;// 遍历所有城市for(inti=0;i<n;i++){// 若该城市未被访问过if(!visited[i]){// 标记被访问过visited[i]=true;// 该城市入队列queue.offer(i);// bfs遍历所有与该城市相连的城市while(!queue.isEmpty()){// 队首元素出队列Integerpop=queue.pop();for(intj=0;j<n;j++){// 若该城市未被访问过且与当前城市相连if(!visited[j]&&isConnected[pop][j]==1){// 标记被访问过visited[j]=true;// 该城市入队列queue.offer(j);}}}// 遍历完所有与该城市相连的城市后,相连的城市数量加1provinceCount++;}}returnprovinceCount;}

复杂度分析

  • 总体时间复杂度:O(n²)
    • 外层循环n次
    • 每次BFS内部的内层循环总共执行n次(检查所有城市)
    • 虽然有嵌套结构,但每个节点只被访问一次,总时间复杂度为O(n²)
  • 空间复杂度:O(n)
    • visited数组:O(n) - 存储每个城市是否被访问
    • queue队列:最坏情况下O(n) - 在极端情况下,所有城市可能同时在队列中
    • 其他变量:O(1)

注意:provinceCount要在这个省份的所有城市都遍历结束后再去+1,而不要写到visited[j]后面。
一定要理解好题目,题目是要求省份的数量,当多个城市相连时,这些城市只能算是一个省,如果直接在遍历时,即在visited[j]后面就将provinceCount+1的话,就会导致每个城市相连就像省份数量+1,从而导致省份数量严重被高估。
举例说明:
假设有3个城市,连接关系如下:

isConnected = [ [1,1,0], [1,1,0], [0,0,1] ]
  • 城市0和城市1相连(同一省份)
  • 城市2独立(另一个省份)
  • 正确答案应该是2个省份

如果把provinceCount++放在visited[j] = true之后:

  • 当i=0时,会访问城市0和1,provinceCount会增加多次
  • 当i=2时,会访问城市2,provinceCount再增加
  • 结果就不正确了
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/19 18:30:16

当暴雪来袭:软件系统的容错启示录

引言&#xff1a;白色灾难的数字化映射2025年末席卷华北的世纪暴雪导致交通瘫痪、电网崩溃、物流中断。这场持续96小时的极端天气事件&#xff0c;恰似一次对现代城市运行系统的全链路压力测试。当我们复盘供电网络崩溃的三级连锁故障时&#xff0c;软件测试从业者敏锐地发现&a…

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

文化事件嫁接:本地化测试中的敏感场景处置方法论

一、文化事件嫁接的测试学定义 在本地化测试范畴中&#xff0c;文化事件嫁接特指将源语言文化背景中的特定元素&#xff08;如节日符号、历史隐喻、社会习俗&#xff09;迁移至目标文化环境时产生的认知冲突现象。2025年Forrester调研显示&#xff0c;78%的跨国数字产品本地化…

作者头像 李华
网站建设 2026/2/17 23:48:49

Android 15 ServiceManager与Binder服务注册深度解析

引言 在上一篇文章中,我们深入分析了Binder驱动的内核机制。但是有一个核心问题还没有回答:Client如何知道Server的Binder句柄? 想象一下,你想打电话给朋友,但你不知道他的电话号码。这时你需要查电话簿(Yellow Pages)。在Android系统中,ServiceManager就是这本"电话簿…

作者头像 李华
网站建设 2026/2/15 15:40:16

气候事件应用:云原生系统弹性测试设计

1. 总述&#xff1a;云原生系统与气候事件弹性测试概述 随着气候变化加剧&#xff0c;极端天气事件&#xff08;如洪水、飓风、热浪&#xff09;频发&#xff0c;对数字化基础设施构成严峻挑战。云原生系统&#xff08;Cloud-Native Systems&#xff09;&#xff0c;基于微服务…

作者头像 李华
网站建设 2026/2/19 5:13:14

‌金融波动场景下的交易流程稳定性测试强化

‌一、背景&#xff1a;金融波动如何重塑测试范式‌ 金融市场的瞬时波动——如美股闪崩、人民币汇率跳水、加密资产暴跌——正从“偶发风险”演变为“常态压力源”。2023年中信证券因UPS断电导致交易系统中断19分钟&#xff0c;2025年支付宝消息库局部故障引发支付卡顿&#x…

作者头像 李华
网站建设 2026/2/21 14:33:02

CAD加密软件哪个好?2026精选5款CAD加密软件,千万别错过

你的核心图纸&#xff0c;可能正被竞争对手“免费预览”。要知道CAD图纸作为企业的设计命脉&#xff0c;一旦泄露&#xff0c;损失动辄百万。设计师熬夜赶稿&#xff0c;老板投入重金研发&#xff0c;却因安全漏洞让设计成果付诸东流&#xff0c;这会让多少老板痛彻心扉。别担心…

作者头像 李华