DeepSeek    LeetCode 3841. 查询树上回文路径 Java实现
解题思路这道题的核心在于如何高效判断树中任意两点路径上的字符能否重排为回文串。回文串的判定条件一个字符串能重排成回文串当且仅当其出现奇数次的字符最多只有一个。例如 aac 中 a 出现2次偶c 出现1次奇可重排为 aca。核心优化技巧——前缀异或Prefix XOR与位掩码· 用26位整数int的二进制位表示每个字符的奇偶性。某位为1表示对应字符出现奇数次0表示偶数次。· 定义 mask[node] 为从根节点到该节点路径上所有字符的奇偶掩码。· 树上两点 u 和 v 之间路径的奇偶掩码计算公式为mask(u→v) mask(u) XOR mask(v) XOR (1 char(lca(u, v)))其中 lca(u, v) 是 u 和 v 的最近公共祖先。处理更新操作节点字符变更时只需更新以该节点为根的整棵子树的 mask 值。利用 DFS序欧拉序 将子树转化为连续区间再用 树状数组Fenwick Tree 维护区间异或和与单点查询。---Java 实现代码javaimport java.util.*;public class Solution {// 链式前向星存图private int[] head, to, nxt;// 二进制提升LCAprivate int[][] up;private int[] depth;// DFS序欧拉序private int[] in, out;private int timer;private int maxLog;// 树状数组private BIT bit;// 当前字符数组private char[] chars;public ListBoolean palindromePath(int n, int[][] edges, String s, String[] queries) {chars s.toCharArray();// 1. 建图buildGraph(n, edges);// 2. DFS预处理深度、父节点、DFS序maxLog 31 - Integer.numberOfLeadingZeros(n);up new int[maxLog 1][n];depth new int[n];in new int[n];out new int[n];timer 0;dfs(0, -1);// 3. 二进制提升表for (int k 1; k maxLog; k) {for (int i 0; i n; i) {up[k][i] up[k - 1][up[k - 1][i]];}}// 4. 树状数组维护每个节点的前缀掩码bit new BIT(n 2);for (int i 0; i n; i) {int mask 1 (chars[i] - a);bit.rangeXor(in[i], out[i], mask);}// 5. 处理查询ListBoolean ans new ArrayList();for (String query : queries) {if (query.startsWith(update)) {// 解析update ui cint space1 query.indexOf( );int space2 query.indexOf( , space1 1);int u Integer.parseInt(query.substring(space1 1, space2));char c query.charAt(space2 1);if (c ! chars[u]) {int oldMask 1 (chars[u] - a);int newMask 1 (c - a);int diff oldMask ^ newMask; // 变化的位bit.rangeXor(in[u], out[u], diff);chars[u] c;}} else {// 解析query u vint space1 query.indexOf( );int space2 query.indexOf( , space1 1);int u Integer.parseInt(query.substring(space1 1, space2));int v Integer.parseInt(query.substring(space2 1));int l lca(u, v);// 路径掩码 mask(u) ^ mask(v) ^ char(lca)int mask bit.pointQuery(in[u]) ^ bit.pointQuery(in[v]) ^ (1 (chars[l] - a));// 判断是否只有0个或1个1ans.add((mask (mask - 1)) 0);}}return ans;}// ---------- 建图 ----------private void buildGraph(int n, int[][] edges) {int m edges.length;head new int[n];Arrays.fill(head, -1);to new int[m * 2];nxt new int[m * 2];for (int i 0; i m; i) {int u edges[i][0], v edges[i][1];to[i * 2] v;nxt[i * 2] head[u];head[u] i * 2;to[i * 2 1] u;nxt[i * 2 1] head[v];head[v] i * 2 1;}}// ---------- DFS深度、父节点、DFS序 ----------private void dfs(int u, int parent) {in[u] timer;up[0][u] parent -1 ? 0 : parent;for (int e head[u]; e ! -1; e nxt[e]) {int v to[e];if (v parent) continue;depth[v] depth[u] 1;dfs(v, u);}out[u] timer;}// ---------- LCA二进制提升 ----------private int lca(int u, int v) {if (depth[u] depth[v]) {int tmp u; u v; v tmp;}// 提升u到与v同深度int diff depth[u] - depth[v];for (int k maxLog; k 0; k--) {if ((diff (1 k)) ! 0) {u up[k][u];}}if (u v) return u;for (int k maxLog; k 0; k--) {if (up[k][u] ! up[k][v]) {u up[k][u];v up[k][v];}}return up[0][u];}// ---------- 树状数组支持区间异或、单点查询 ----------static class BIT {int n;int[] tree;BIT(int n) { this.n n; tree new int[n 1]; }void add(int idx, int val) {for (; idx n; idx idx -idx) tree[idx] ^ val;}// 区间 [l, r] 异或上 valvoid rangeXor(int l, int r, int val) {add(l, val);add(r 1, val);}// 单点查询int pointQuery(int idx) {int res 0;for (; idx 0; idx - idx -idx) res ^ tree[idx];return res;}}}代码解释1. dfs预处理计算每个节点的深度、父节点和 DFS 进入/退出时间戳。同一子树的节点在 in 和 out 之间形成连续区间。2. BIT 树状数组维护每个节点对应的前缀奇偶掩码从根到该节点。rangeXor(in[u], out[u], mask) 将 u 的整棵子树所有节点的前缀掩码异或上 mask。3. 查询处理· 用 pointQuery(in[u]) 获取 mask(u)。· 计算路径掩码mask(u) ^ mask(v) ^ (1 char(lca))。· 判断 (mask (mask - 1)) 0即二进制中是否只有0个或1个1。4. 更新处理字符从 old 变为 new 时diff (1old) ^ (1new) 表示变化的位对 u 的子树区间异或 diff 即可。

相关新闻

华为MetaERP Oracle EBS R12  Oracle Fusion Cloud 资源费率、制造费用费率全流程配置手册整体前置前提:资源 Resource、部门、工作中心、Routin

华为MetaERP Oracle EBS R12 Oracle Fusion Cloud 资源费率、制造费用费率全流程配置手册整体前置前提:资源 Resource、部门、工作中心、Routin

Oracle EBS R12 & Oracle Fusion Cloud 资源费率、制造费用费率全流程配置手册整体前置前提:资源 Resource、部门、工作中心、Routing 工艺路线、成本账簿 / 成本类型、吸收总账科目、SLA 会计分录规则已预先配置完成;区分两大体系:EBS&a…

2026/8/7 0:48:41 阅读更多 →
华为MetaERP Oracle EBS R12 + Oracle Fusion Cloud 离散制造业料工费全流程成本归集、流转、结转核算方案总前置说明核算基准:全文以制造业主流标准成本法为主,

华为MetaERP Oracle EBS R12 + Oracle Fusion Cloud 离散制造业料工费全流程成本归集、流转、结转核算方案总前置说明核算基准:全文以制造业主流标准成本法为主,

Oracle EBS R12 Oracle Fusion Cloud 离散制造业料工费全流程成本归集、流转、结转核算方案总前置说明核算基准:全文以制造业主流标准成本法为主,附带期间平均成本 PAC 差异说明;EBS 传统本地部署、Fusion 云 SaaS 架构逻辑同源,…

2026/8/7 0:48:41 阅读更多 →
华为MetaERP Oracle EBS 和 Fusion 的生产成本核算主线是相通的:以工单(Work Order/Job)为成本对象,BOM+Routing 决定标准成本结构,车间每一笔实物流转(

华为MetaERP Oracle EBS 和 Fusion 的生产成本核算主线是相通的:以工单(Work Order/Job)为成本对象,BOM+Routing 决定标准成本结构,车间每一笔实物流转(

Oracle EBS 和 Fusion 的生产成本核算主线是相通的:以工单(Work Order/Job)为成本对象,BOMRouting 决定标准成本结构,车间每一笔实物流转(发料、报工、移动、完工、关闭)自动触发会计分录&#…

2026/8/7 0:48:41 阅读更多 →

最新新闻

35岁运维工程师必看:收藏这份网安转行指南,黄金窗口期直接抄!

35岁运维工程师必看:收藏这份网安转行指南,黄金窗口期直接抄!

35岁运维工程师必看:收藏这份网安转行指南,黄金窗口期直接抄! 随着技术发展,运维工程师面临职业瓶颈,网络安全领域人才需求旺盛。本文为运维工程师提供转行指南,包括学习网络安全基础、渗透测试、应急响应…

2026/8/7 23:50:02 阅读更多 →
【Bug已解决】[Quantization FP8] Native from_config support 解决方案

【Bug已解决】[Quantization FP8] Native from_config support 解决方案

【Bug已解决】[Quantization FP8] Native from_config support 解决方案 一、现象长什么样 你想用 from_config 直接按配置构造一个 FP8 量化模型(而不是先 from_pretrained 再量化),但量化没有被应用: # 现象 A:from_…

2026/8/7 23:50:02 阅读更多 →
电赛国一报告撰写指南:从方案论证到测试分析的全流程解析

电赛国一报告撰写指南:从方案论证到测试分析的全流程解析

1. 项目概述:一份“国一”报告是如何炼成的 在电子设计竞赛(电赛)的战场上,一份高质量的设计报告,其重要性绝不亚于一个功能完美的硬件作品。很多队伍在调试阶段通宵达旦,却在最后关头因为报告撰写不规范、…

2026/8/7 23:50:02 阅读更多 →
小麦田无人机图像数据集:精准农业无人机影像

小麦田无人机图像数据集:精准农业无人机影像

摘要:小麦田无人机图像数据集(Drone Images of Wheat Fields)提供精准农业中小麦田的高分辨率航拍图像,由 DJI 无人机拍摄。数据集简介数据集概述小麦田无人机图像数据集(Drone Images of Wheat Fields)提供…

2026/8/7 23:50:02 阅读更多 →
项目文档:基于深度学习的指甲疾病早期智能诊断系统的设计与实现:采用VGG16卷积神经网络的迁移学习方法

项目文档:基于深度学习的指甲疾病早期智能诊断系统的设计与实现:采用VGG16卷积神经网络的迁移学习方法

摘要:指甲形态、颜色和表面纹理的改变与局部感染、营养状态及多种系统性疾病存在一定关联,因而指甲图像具有无创、便捷和可重复采集的特点。传统诊断主要依赖专科医生的经验判断,在基层场景中容易受到专家资源、观察条件和主观差异的限制。内…

2026/8/7 23:50:02 阅读更多 →
GTA4完整版终极修复指南:FusionFix如何彻底解决现代PC游戏问题

GTA4完整版终极修复指南:FusionFix如何彻底解决现代PC游戏问题

GTA4完整版终极修复指南:FusionFix如何彻底解决现代PC游戏问题 【免费下载链接】GTAIV.EFLC.FusionFix This project aims to fix or address some issues in Grand Theft Auto IV: The Complete Edition 项目地址: https://gitcode.com/gh_mirrors/gt/GTAIV.EFLC…

2026/8/7 23:49:01 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →