NEWS DETAIL

DeepSeek LeetCode 3559. 给边赋权值的方案数 II Java实现

发布时间:2026/10/27 4:07: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)。
✦

本文为尧图网络原创建站知识分享。想针对自身行业获取定制化建站方案?欢迎咨询,资深顾问免费为你出思路。

RELATED

相关 资讯推荐

MORE

更多 新鲜资讯

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析
2026/10/26 17:54:34

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析

1. 项目概述:从零开始,用JMeter搞定HTTP性能测试 刚接触性能测试的新手,或者是从功能测试转过来的朋友,一听到“压测”两个字,心里可能就有点发怵。工具那么多,概念那么杂,从哪儿下手呢&#xf…

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统
2026/10/25 22:00:41

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统

最近我用TypeScript写了一个运行在浏览器里的Web操作系统 Earendel(目前已知的距离地球最遥远的恒星)。开发它的初衷主要是为了Linux和操作系统课程的教学。市面上绝大多数Web OS项目,要么只是做了一个长得像Windows/macOS的网页UI拼盘&#…

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]
2026/10/25 8:02:16

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形🚀 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: http…

从零制作同人动画:技术路线、流程与实战避坑指南
2026/10/26 20:41:04

从零制作同人动画:技术路线、流程与实战避坑指南

1. 先搞清楚这个“粉丝动画”到底是什么,以及它能解决什么问题看到“五条悟VS宿傩/咒术回战粉丝动画”这个标题,很多人的第一反应可能是去找一个现成的视频。但如果你是一个想自己动手创作、或者想了解这类作品背后技术流程的创作者,这个标题…

闭源降价80%,开源却在涨价:AI定价的交叉路口
2026/10/25 22:24:04

闭源降价80%,开源却在涨价:AI定价的交叉路口

8月6日,两条价格曲线悄然交汇。 一条向下:OpenAI把GPT-5.6 Luna的输出价格从6美元砍到1.2美元/百万Token,降幅80%。另一条向上:同一天,DeepSeek公告全线涨价,措辞是"涨幅较大",非试探…

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买
2026/10/25 8:02:07

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买经常有工厂朋友拿着网上的"三防平板十大品牌排行榜"来问我:到底选哪个?说实话排行榜看看就行,真正选型得看你产线什么场景。今天挑五个在产线数字化里用得比较多的品牌—…

看完这篇,还想了解更多?

预约尧图网络顾问一对一沟通,针对你的行业与现状给出建站建议,全程免费。

免费咨询