news 2026/9/3 1:16:02

力扣-重新规划路线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣-重新规划路线

思路分析

  1. 预处理:构建带 “反转标记” 的邻接表(最核心的优化点)
    传统思路是用 “无向邻接表 + 哈希集合存原始边”,而这段代码直接在邻接表中存储边的方向和反转代价:
    对于原始有向边 a->b:
    向 a 的邻接列表中添加 {b, 1}:表示从 a 到 b 是原始方向,若遍历路径是 a→b(背离 0),则需要反转这条边,标记代价 1;
    向 b 的邻接列表中添加 {a, 0}:表示从 b 到 a 是反向方向,若遍历路径是 b→a(指向 0),则无需反转,标记代价 0。
    这种设计的本质:把 “判断原始边方向” 和 “统计反转数” 合并到邻接表中,无需额外存储和查询原始边,空间和时间效率更高。
  2. BFS 初始化
    队列:存储待遍历的城市,初始放入起点城市 0(BFS 的层序遍历起点);
    访问数组:标记已遍历的城市,避免重复处理(比如 0→1 后,不再处理 1→0);
    结果计数器 res:初始为 0,累计需要反转的边数。
  3. BFS 核心遍历逻辑
    取出队列头部的当前城市 curr;
    遍历 curr 的所有邻接节点(每个邻接节点是 {next, flag} 数组):
    若 next 未被访问:
    ✅ 累加 flag 到 res(flag=1 则反转,flag=0 则不反转);
    ✅ 标记 next 为已访问;
    ✅ 将 next 加入队列,继续下一层遍历;
    若 next 已被访问:跳过(避免回头遍历)。
    队列为空时,res 就是需要反转的最小边数。

代码实现

publicintminReorder(intn,int[][]connections){// 1. 构建邻接表:adj[x] = {{y, flag}, ...}List<List<int[]>>adj=newArrayList<>();for(inti=0;i<n;i++){adj.add(newArrayList<>());}for(int[]conn:connections){inta=conn[0],b=conn[1];adj.get(a).add(newint[]{b,1});// a→b 是原始边,需反转则+1,标记flag=1adj.get(b).add(newint[]{a,0});// b→a 是反向边,无需反转,标记flag=0}// 2. BFS初始化:队列+访问数组,从0出发Queue<Integer>queue=newLinkedList<>();boolean[]visited=newboolean[n];queue.offer(0);visited[0]=true;intres=0;// 记录需要反转的边数// 3. BFS遍历while(!queue.isEmpty()){intcurr=queue.poll();// 遍历当前节点的所有邻接节点for(int[]neighbor:adj.get(curr)){intnext=neighbor[0];intflag=neighbor[1];if(!visited[next]){// 未访问过的节点才处理res+=flag;// flag=1则反转,计数+1;flag=0无操作visited[next]=true;queue.offer(next);}}}returnres;}

复杂度分析

  • 时间 O (n)(每个节点 / 边仅遍历一次),
  • 空间 O (n)(邻接表 + 队列 + 访问数组),
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 17:57:46

用户行为热点:登录峰值测试与优化

‌用户行为热点与登录峰值挑战在数字化时代&#xff0c;用户行为热点如促销活动、节假日或突发事件常引发登录峰值——即系统在短时间内承受高并发用户登录请求。对软件测试从业者而言&#xff0c;这不仅关乎系统稳定性&#xff0c;还直接影响用户体验和业务连续性。据统计&…

作者头像 李华
网站建设 2026/9/2 10:10:25

GNSS与单北斗变形监测技术的应用现状分析与未来发展方向

本文旨在分析GNSS变形监测一体机与单北斗变形监测系统的当前应用现状及未来的发展趋势。从技术特点到市场需求&#xff0c;单北斗变形监测已在基础设施管理中扮演重要角色。重点探讨了单北斗的原理&#xff0c;包括它在桥梁、大坝和地质灾害监测中的应用&#xff0c;及其提供的…

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

【swiftUI】实现智能可收缩日历(单行/全月切换)

一、 核心特性 智能显示模式&#xff1a;收起状态--仅显示当前日期所在的整周&#xff08;7天&#xff09;&#xff1b;展开状态--显示完整月份的日历网格&#xff1b;平滑的动画过渡效果 数据一致性&#xff1a;始终显示当前月份的数据&#xff1b;收起时自动定位到当前周&am…

作者头像 李华
网站建设 2026/9/2 23:11:29

MemOS开源框架实战:构建基于Graph的记忆图谱,让AI具备长期记忆能力

MemOS是一款基于Graph的记忆开源项目&#xff0c;通过TreeTextMemory实现结构化记忆存储与关联。本文详细介绍了如何在LangChain1.x框架中集成MemOS的记忆图谱能力&#xff0c;包括构建带记忆的ChatBot、体验记忆的自动重组功能&#xff0c;以及通过Middleware机制实现无侵入式…

作者头像 李华
网站建设 2026/9/3 1:13:42

windows QT项目

一、1、2、在纯linux环境下用QTCreator这个IDE去编项目&#xff1b;但是如果在windows上编写qt项目&#xff0c;VS这个IDE还是比QTCreator要强大很多&#xff0c;而且VS编写的QT项目&#xff0c;仍然可以移植到Linux等平台上&#xff0c;不影响跨平台特性&#xff01;&#xff…

作者头像 李华
网站建设 2026/8/26 10:25:34

‌新闻事件分析:社交媒体数据验证测试案例

为什么社交媒体数据正在重塑测试边界‌在2026年&#xff0c;软件测试的战场已不再局限于API响应码、数据库事务一致性或UI布局像素偏差。‌社交媒体数据‌&#xff0c;作为全球最庞大、最动态、最不可控的非结构化输入源&#xff0c;正成为系统鲁棒性验证的“终极压力测试场”。…

作者头像 李华