Kimi LeetCode 3553. 包含要求路径的最小带权子图 II Java实现
📅 2026/7/16 9:19:16
👁️ 次浏览
LeetCode 3553. 包含要求路径的最小带权子图 II核心思路这道题的关键数学观察是树上包含三个点的最小连通子树的边权和 (三点两两距离之和) / 2。在树结构中任意两点的路径唯一连接三个点的最小子树就是这三条路径的并集。通过 LCA最近公共祖先可以在 O(\log n) 时间内求出任意两点距离从而快速回答每个查询。算法步骤1. 建图将无向带权树用邻接表存储2. DFS 预处理以节点 0 为根记录每个节点的深度 depth[]、到根距离 dist[]、以及直接父节点 jump[][0]3. 倍增预处理jump[i][j] 表示节点 i 的 2^j 级祖先用于 O(\log n) 求 LCA4. 回答查询对每个 query [src1, src2, dest]计算answer (dist(src1,src2) dist(src1,dest) dist(src2,dest)) / 2复杂度- 时间O(n \log n q \log n)- 空间O(n \log n)---Java 实现javaclass Solution {public int[] minimumWeight(int[][] edges, int[][] queries) {int n edges.length 1;// 计算需要的倍增层数: 2^LOG nint LOG 0;while ((1 LOG) n) LOG;// 建图: graph[u] list of {v, weight}Listint[][] graph new ArrayList[n];for (int i 0; i n; i) {graph[i] new ArrayList();}for (int[] e : edges) {int u e[0], v e[1], w e[2];graph[u].add(new int[]{v, w});graph[v].add(new int[]{u, w});}// jump[i][j] 节点 i 的 2^j 级祖先int[][] jump new int[n][LOG];int[] depth new int[n];long[] dist new long[n]; // 节点到根的距离// 第一次 DFS 预处理深度、距离、父节点dfs(graph, 0, -1, jump, depth, dist);// 倍增预处理祖先表for (int j 1; j LOG; j) {for (int i 0; i n; i) {jump[i][j] jump[jump[i][j - 1]][j - 1];}}int[] ans new int[queries.length];for (int i 0; i queries.length; i) {int a queries[i][0];int b queries[i][1];int c queries[i][2];long d1 distance(a, b, jump, depth, dist);long d2 distance(a, c, jump, depth, dist);long d3 distance(b, c, jump, depth, dist);ans[i] (int) ((d1 d2 d3) / 2);}return ans;}// DFS 预处理: 深度、到根距离、直接父节点private void dfs(Listint[][] graph, int u, int parent,int[][] jump, int[] depth, long[] dist) {for (int[] e : graph[u]) {int v e[0], w e[1];if (v parent) continue;jump[v][0] u;depth[v] depth[u] 1;dist[v] dist[u] w;dfs(graph, v, u, jump, depth, dist);}}// 求 u 和 v 的最近公共祖先 LCAprivate int lca(int u, int v, int[][] jump, int[] depth) {if (depth[u] depth[v]) {int tmp u; u v; v tmp;}// 将 v 提升到与 u 同一深度int diff depth[v] - depth[u];for (int j 0; j jump[0].length; j) {if ((diff j 1) 1) {v jump[v][j];}}if (u v) return u;// 同时向上跳找到 LCA 的下一层for (int j jump[0].length - 1; j 0; j--) {if (jump[u][j] ! jump[v][j]) {u jump[u][j];v jump[v][j];}}return jump[u][0];}// 求 u 和 v 之间的带权距离private long distance(int u, int v, int[][] jump, int[] depth, long[] dist) {int w lca(u, v, jump, depth);return dist[u] dist[v] - 2 * dist[w];}}关键点说明要点 说明为什么答案 三边距离和 / 2 树上三个点的最小连通子树中每条边被覆盖的次数恰好是 2 次除了中心交汇点所以总边权 两两距离之和 / 2倍增层数 LOG 动态计算 2^LOG n对于 n \le 10^5 约需 1718 层long 类型 中间距离和可能超过 int 范围虽然最终答案在 int 内故 dist[] 和中间计算用 long根节点选择 任选节点作为根这里选 0树上距离与根的选择无关
如何彻底解锁《艾尔登法环》帧率限制:终极帧率解锁与游戏体验优化指南 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh…
📅 2026/7/16 9:18:16
1. 为什么选择Bonobo Git Server?如果你在Windows环境下工作,想要快速搭建一个轻量级的Git服务器,Bonobo Git Server绝对是个不错的选择。我当初选择它就是因为简单——不需要折腾虚拟机或Docker,直接跑在IIS上,特别适…
📅 2026/7/16 9:18:16
1. CH9344芯片的工业级扩展能力解析 第一次接触CH9344这颗芯片时,我正被一个工业现场的数据采集项目折磨得焦头烂额。现场需要同时连接4个不同协议的传感器,还要控制多个执行机构,传统的串口扩展方案要么成本太高,要么稳定性堪忧。…
📅 2026/7/16 9:18:16
1. 功放电路的基础认知:从原理到分类功放电路(功率放大器)是电子系统中将微弱信号放大到足以驱动负载的核心部件。我第一次接触功放是在大学电子设计课上,当时用LM386芯片搭建的5瓦小音箱让我深刻体会到——功率放大不是简单的信号…
📅 2026/7/16 10:09:22
目录引言一、const修饰指针二、野指针野指针的成因1.指针未初始化2.指针越界访问3.指针指向的空间释放如何规避野指针1.指针变量初始化2.小心指针越界3.指针变量不再使用时,及时置为NULL,指针使用前检查有效性4.避免返回局部变量的地址三、assert断言四、…
📅 2026/7/16 10:09:22
1. 为什么Agent场景需要关注Flash档模型在AI领域,我们常常被各种"最强模型"的营销话术所吸引,但实际业务场景中,特别是Agent应用场景,Flash档模型往往才是更务实的选择。所谓Flash档模型,指的是那些在特定场…
📅 2026/7/16 10:09:22
1. LabVIEW计算模型的核心特性解析 作为一款图形化编程环境,LabVIEW最显著的特点是其基于数据流(Dataflow)的计算模型。这种模型与我们熟知的文本编程语言(如C、Python)的顺序执行模式有着本质区别。数据流模型的核心在…
📅 2026/7/16 10:09:22
1. 什么是PMIC电源管理芯片?PMIC(Power Management Integrated Circuit)电源管理芯片是现代电子设备中不可或缺的核心组件。简单来说,它就像电子设备的"能量管家",负责将输入电源(如电池或外部电…
📅 2026/7/16 10:09:22
别再迷信那些一夜爆红的流量神话了,这篇干货直接告诉你,如何通过AI优化GEO价值,让你的品牌在搜索结果里真正“站得住脚”。我们不谈虚头巴脑的概念,只聊怎么让百度和Google更喜欢你的内容,怎么把路人变成铁粉。读完这篇,你会明白为什么你的网站明明内容不错,却总是排在别…
📅 2026/7/16 10:08:40
1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…
📅 2026/7/16 0:00:02
前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…
📅 2026/7/16 0:00:02
1. 项目概述与核心价值 在高速数字系统、通信设备乃至精密测量仪器中,一个稳定、纯净且可精确调控的时钟信号,往往是整个系统稳定运行的“心跳”。无论是确保数据在光纤中无误传输,还是让ADC/DAC芯片精准采样,亦或是让多块FPGA板卡…
📅 2026/7/16 0:00:02
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/15 14:09:20
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/16 4:59:31
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03