news 2026/4/23 12:55:09

力扣-重新规划路线

作者头像

张小明

前端开发工程师

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/4/23 10:10:17

‌经济下行应对:取消失败测试的情感共鸣点

经济寒流中的测试困境‌2026年&#xff0c;全球经济持续下行&#xff0c;科技行业面临严峻挑战。软件测试作为质量保障的核心环节&#xff0c;首当其冲承受压力&#xff1a;预算削减、项目紧缩、发布周期缩短。在这种背景下&#xff0c;“取消失败测试”现象日益普遍——测试用…

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

食品X光机:异物检测原理与技术指标解析

于当下食品工业高度趋向自动化且安全标准越发严格之际&#xff0c;异物污染属于生产企业所面临的主要风险当中的一个。食品X光检测机作为一种具备高效能的非破坏性检测装置&#xff0c;其可以有效地辨认出产品里的金属、玻璃、陶瓷、石块、骨骼以及高密度塑料等多种不同异物&am…

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

高原缺氧环境下的AI压力测试术:挑战、实战与优化策略

一、引言&#xff1a;高原缺氧环境的独特挑战 高原缺氧环境&#xff08;如拉萨&#xff0c;海拔3650米&#xff0c;氧浓度不足平原的50%&#xff09;为AI系统压力测试提供了极端场景&#xff0c;显著不同于常规测试环境。这种环境通过三重机制影响AI系统&#xff1a; 硬件可靠…

作者头像 李华
网站建设 2026/4/23 10:08:26

别再瞎找了!千笔,继续教育论文写作神器

你是否曾为论文选题发愁&#xff0c;面对海量文献无从下手&#xff1f;是否在反复修改中感到力不从心&#xff0c;却始终无法达到导师的要求&#xff1f;论文写作不仅是学术能力的考验&#xff0c;更是时间与精力的拉锯战。对于继续教育的学生而言&#xff0c;工作与学习的双重…

作者头像 李华
网站建设 2026/4/23 11:22:56

一篇搞定全流程AI论文工具,千笔ai写作 VS speedai,研究生专属高效之选

随着人工智能技术的迅猛迭代与普及&#xff0c;AI辅助写作工具已逐步渗透到高校学术写作场景中&#xff0c;成为研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生&#xff0c;开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时&#xff0c;市场…

作者头像 李华
网站建设 2026/4/23 11:26:27

谷歌北大联手学术版Banana爆火,论文图表100%精确生成

论文作者表示&#xff0c;PaperBanana为全自动生成可用于出版的插图铺平了道路。效果好到刷屏的Nano Banana&#xff0c;学术特供版热乎出炉&#xff01;名字就是如此直观——PaperBanana&#xff0c;给你每天都在头痛的Paper用上Banana。&#xff08;试图押韵skr)而且这一次是…

作者头像 李华