DeepSeek LeetCode 3559. 给边赋权值的方案数 II Java实现 📅 发布时间:2026/7/15 20:53:11 👁️ 浏览次数: 根据题目要求对于树中任意两个节点 u 和 v路径长度为 d边数使路径总代价为奇数的赋值方案数为 2^(d-1)。因此核心问题转化为快速求树上两点距离。以下是 Java 实现使用二进制提升Binary Lifting 求 LCA预处理 O(n log n)单次查询 O(log n)javaclass Solution {private static final int MOD 1_000_000_007;private ListListInteger graph;private int[] depth;private int[][] up;public int[] assignEdgeWeights(int[][] edges, int[][] queries) {int n edges.length 1;// 1. 建图graph new ArrayList();for (int i 0; i n; i) graph.add(new ArrayList());for (int[] e : edges) {int u e[0] - 1, v e[1] - 1;graph.get(u).add(v);graph.get(v).add(u);}// 2. 预处理深度 倍增表int LOG 32 - Integer.numberOfLeadingZeros(n); // ceil(log2(n)) 1depth new int[n];up new int[n][LOG];dfs(0, -1);// 3. 预处理 2 的幂次int[] pow2 new int[n 1];pow2[0] 1;for (int i 1; i n; i) {pow2[i] (int)((long)pow2[i - 1] * 2 % MOD);}// 4. 处理每个查询int q queries.length;int[] ans new int[q];for (int i 0; i q; i) {int u queries[i][0] - 1, v queries[i][1] - 1;int lca findLca(u, v);int dist depth[u] depth[v] - 2 * depth[lca];ans[i] dist 0 ? 0 : pow2[dist - 1];}return ans;}// DFS 构建深度和倍增表private void dfs(int node, int parent) {up[node][0] parent -1 ? node : parent;for (int j 1; j up[0].length; j) {up[node][j] up[up[node][j - 1]][j - 1];}for (int nei : graph.get(node)) {if (nei parent) continue;depth[nei] depth[node] 1;dfs(nei, node);}}// 将节点向上提升 diff 步private int lift(int node, int diff) {for (int j 0; diff 0; j, diff 1) {if ((diff 1) 1) node up[node][j];}return node;}// 求 LCAprivate int findLca(int u, int v) {if (depth[u] depth[v]) {int tmp u; u v; v tmp;}v lift(v, depth[v] - depth[u]);if (u v) return u;for (int j up[0].length - 1; j 0; j--) {if (up[u][j] ! up[v][j]) {u up[u][j];v up[v][j];}}return up[u][0];}}复杂度分析· 时间复杂度预处理 O(n log n)每个查询 O(log n)· 空间复杂度O(n log n)核心思路补充为什么答案是 2^(d-1)路径上 d 条边每条可选 1 或 2。要让总和为奇数等价于从 d 条边中选奇数条赋值为 1其余为 2。d 个元素中选奇数个的组合数之和 2^(d-1)。
Hermes 消息平台配置飞书 一、相关文档 飞书 / Lark 设置 https://hermes-agent.ac.cn/docs/user-guide/messaging/feishu 二、多种配置方式 2.1 命令行交互式配置(推荐) 2.1.1 hermes gateway setup Select a platform to configure:↑↓ navigate ENTER/SPACE select ES… 2026/7/15 20:51:11
【ChatGPT面试模拟训练终极指南】:20年HR总监亲授——97%候选人忽略的3个临场决策陷阱 更多请点击: https://intelliparadigm.com 第一章:ChatGPT面试模拟训练的核心价值与适用边界 ChatGPT驱动的面试模拟训练正成为技术求职者提升实战能力的关键工具,其核心价值在于提供高拟真度、低风险、可迭代的对话式反馈闭环。不同于静态题… 2026/7/15 20:49:10
车载摄像头FPD-Link III解串器DS90UB934-Q1硬件设计与调试全解析 1. 项目概述与核心价值在汽车智能化浪潮中,摄像头已经从简单的“倒车影像”演变为自动驾驶和高级驾驶辅助系统(ADAS)的“眼睛”。这些“眼睛”需要将海量的图像数据,以极高的帧率和极低的延迟,从车身的各个角落&#x… 2026/7/15 20:47:10
数据库SQL Plan的自动演进:用多臂老虎机算法在线选择最优执行计划 数据库SQL Plan的自动演进:用多臂老虎机算法在线选择最优执行计划 一、同一条SQL,优化器昨天选A方案、今天选B方案——计划漂移的烦恼 生产环境中最让DBA头疼的问题之一:一条运行了半年的SQL突然变慢了。排查发现不是数据量变了,不… 2026/7/15 22:40:00
LLMOps平台搭建:从实验追踪到模型服务的完整流水线 LLMOps平台搭建:从实验追踪到模型服务的完整流水线 一、LLMOps的独特挑战 LLMOps不是MLOps的简单平移。两者的核心差异在于规模和成本。LLM参数规模从7B到数百B。推理成本是传统ML模型的100-1000倍。提示词工程是全新的变更管理维度。评估标准从精确率变为语义相关性… 2026/7/15 22:40:00
pandas多维聚合生产实践:从groupby到高可用BI分析流水线 1. 项目概述:为什么多维聚合不是“加个groupby”就能搞定的事 我在银行风控部门做过三年数据管道开发,后来跳槽到一家头部支付机构做BI平台架构。这期间最常被业务方拍着桌子问的一句话是:“上个月华东区餐饮类商户的交易金额中位数、手续费波… 2026/7/15 22:40:00
TurtleBot3 ROS环境搭建:Ubuntu 20.04+Noetic精准配置指南 1. 这不是“装个系统”那么简单:TurtleBot3的SBC软件设置本质是机器人ROS生态的首次握手 你手里的TurtleBot3小车,核心大脑是一块树莓派4B(或OpenCR主控板),但真正让它“活起来”的,不是那几颗螺丝和电机&a… 2026/7/15 22:37:59
PX4 Circle Mode原理与实战:绕圈模式的运动学建模与控制边界 1. 项目概述:Circle Mode不是“画个圈”那么简单Circle Mode(绕圈模式)是Pixhawk飞控中一个看似简单、实则暗藏玄机的飞行模式。很多刚接触PX4或ArduPilot的新手以为它只是让无人机自动绕着某个点转圈——就像遥控器上按个按钮,飞… 2026/7/15 22:37:59
Pixhawk飘移模式:一种面向复杂环境的半托管智能飞行策略 1. 项目概述:飘移模式不是“失控”,而是给飞手留出呼吸空间的智能飞行策略 你第一次在Pixhawk地面站里点开飞行模式列表,看到 Drift Mode(飘移模式) 这个名字时,大概率会愣一下——它既不像Stabilize那样… 2026/7/15 22:37:59
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41