DeepSeek    LeetCode 3841. 查询树上回文路径 Python3实现
解题思路这道题要求高效判断树中任意两点路径上的字符能否重排为回文串。回文串判定条件一个字符串能重排成回文串当且仅当其出现奇数次的字符最多只有一个。核心优化技巧——位掩码 前缀异或· 用26位整数表示每个字符的奇偶性第i位为1表示字符i出现奇数次。· 定义pref[x]为从根节点到x路径上所有字符的奇偶掩码。· 树上两点u和v之间路径的奇偶掩码为mask(u→v) pref[u] ^ pref[v] ^ (1 char(lca(u, v)))处理更新操作节点字符变更时会影响以该节点为根的整棵子树所有节点的pref值。利用DFS序欧拉序将子树转化为连续区间[tin[u], tout[u]]再用树状数组Fenwick Tree维护区间异或更新与单点查询。---Python3 实现代码pythonclass Solution:def palindromePath(self, n: int, edges: list[list[int]], s: str, queries: list[str]) - list[bool]:# ---------- 1. 建图 ----------g [[] for _ in range(n)]for u, v in edges:g[u].append(v)g[v].append(u)# ---------- 2. DFS预处理深度、父节点、DFS序、初始前缀掩码 ----------LOG (n).bit_length()parent [[-1] * n for _ in range(LOG)]depth [0] * ntin [0] * ntout [0] * npref [0] * n # 从根到该节点的初始奇偶掩码timer 0ord_a ord(a)def dfs(u: int, fa: int):nonlocal timertimer 1tin[u] timerparent[0][u] fafor v in g[u]:if v fa:continuedepth[v] depth[u] 1pref[v] pref[u] ^ (1 (ord(s[v]) - ord_a))dfs(v, u)tout[u] timerpref[0] 1 (ord(s[0]) - ord_a)dfs(0, -1)# ---------- 3. 二进制提升表LCA ----------for k in range(1, LOG):for i in range(n):if parent[k-1][i] ! -1:parent[k][i] parent[k-1][parent[k-1][i]]def get_kth_ancestor(node: int, k: int) - int:for i in range(k.bit_length()):if (k i) 1:node parent[i][node]if node -1:return -1return nodedef lca(u: int, v: int) - int:if depth[u] depth[v]:u, v v, uv get_kth_ancestor(v, depth[v] - depth[u])if u v:return ufor k in range(LOG - 1, -1, -1):if parent[k][u] ! parent[k][v]:u parent[k][u]v parent[k][v]return parent[0][u]# ---------- 4. 树状数组区间异或更新 单点查询 ----------bit [0] * (n 2)def bit_add(idx: int, val: int):while idx n:bit[idx] ^ validx idx -idxdef range_xor(l: int, r: int, val: int):bit_add(l, val)bit_add(r 1, val)def point_query(idx: int) - int:res 0while idx 0:res ^ bit[idx]idx - idx -idxreturn res# ---------- 5. 处理查询 ----------chars [ord(c) - ord_a for c in s]ans []for q in queries:parts q.split()op parts[0]if op update:u int(parts[1])c ord(parts[2]) - ord_aif c ! chars[u]:diff (1 chars[u]) ^ (1 c) # 变化的位range_xor(tin[u], tout[u], diff)chars[u] celse: # queryu int(parts[1])v int(parts[2])w lca(u, v)# 当前前缀掩码 初始前缀 ^ BIT累积的更新cur_pref_u pref[u] ^ point_query(tin[u])cur_pref_v pref[v] ^ point_query(tin[v])mask cur_pref_u ^ cur_pref_v ^ (1 chars[w])# 判断是否只有0个或1个1即 mask 为0或2的幂ans.append((mask (mask - 1)) 0)return ans代码解释模块 说明DFS预处理 计算每个节点的depth、父节点parent[0]、DFS进入/退出时间tin/tout以及初始前缀掩码pref。同一子树在tin和tout之间形成连续区间。二进制提升LCA 构建parent[k][i]表示节点i的2^k级祖先lca函数用于O(log n)查询最近公共祖先。树状数组BIT 维护每个节点当前前缀掩码相对于初始值的增量。range_xor(tin[u], tout[u], diff)将u整棵子树所有节点的增量异或上diff。查询处理 当前前缀掩码 pref[u] ^ point_query(tin[u])。路径掩码公式为cur_pref_u ^ cur_pref_v ^ (1 chars[w])。用(mask (mask - 1)) 0判断是否可重排为回文串。更新处理 字符从old变为new时diff (1old) ^ (1new)表示变化的位对u的子树区间做异或更新即可。复杂度分析· 时间复杂度预处理O(n log n)每次查询/更新O(log n)· 空间复杂度O(n log n)LCA表 O(n)邻接表及其他数组

相关新闻

开题报告AI率检测超标怎么改?它全是论述文字,和正文不是一个改法。

开题报告AI率检测超标怎么改?它全是论述文字,和正文不是一个改法。

开题报告AI率检测超标怎么改?它全是论述文字,和正文不是一个改法。 你可能刚经历这么一件事:正文测出来的 AI 率还行,反倒是开题报告或者研究计划书这几千字,数值高得离谱。明明是一个字一个字敲的,怎么就被…

2026/10/15 13:05:51 阅读更多 →
DeepSeek    LeetCode 3841. 查询树上回文路径 Java实现

DeepSeek LeetCode 3841. 查询树上回文路径 Java实现

解题思路这道题的核心在于如何高效判断树中任意两点路径上的字符能否重排为回文串。回文串的判定条件:一个字符串能重排成回文串,当且仅当其出现奇数次的字符最多只有一个。例如 "aac" 中 a 出现2次(偶),c 出…

2026/10/13 5:02:41 阅读更多 →
华为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/10/12 11:53:03 阅读更多 →

最新新闻

C# Socket高性能服务器:IOCP与Task协同设计实战

C# Socket高性能服务器:IOCP与Task协同设计实战

1. 项目概述:为什么一个“C# Task Socket”的组合值得深挖到骨子里你打开 Visual Studio,新建一个控制台项目,敲下new TcpListener(IPAddress.Any, 8080),心里想着“服务器不就是监听端口、收发数据吗?”——这想法没…

2026/10/15 13:05:31 阅读更多 →
CMMI 2.0迁移操作指南:从1.3到2.0的实践域重构与评估准备

CMMI 2.0迁移操作指南:从1.3到2.0的实践域重构与评估准备

简介:CMMI 3.0软件工程规范文档是一份面向软件过程改进人员、项目经理和质量管理人员的参考文件,系统介绍CMMI模型的五个成熟度等级——初始级、已管理级、已定义级、定量管理级与优化级,每个等级的关键目标和核心实践均有梳理。文档还提炼了…

2026/10/15 13:05:31 阅读更多 →
TileLang:一种面向瓦片化系统的声明式建模思维

TileLang:一种面向瓦片化系统的声明式建模思维

1. TileLang不是语言,是图形编程的“乐高底板”最近在几个前端技术社区和图形学讨论组里,频繁看到“tilelang”这个词被提起——不是作为某款新发布的编程语言,也不是某个开源框架的代号,而更像一种正在自发形成的图形化创作共识。…

2026/10/15 13:05:31 阅读更多 →
MFC数独游戏完整源码:生成与求解算法及桌面开发实战

MFC数独游戏完整源码:生成与求解算法及桌面开发实战

简介:这是一份面向C与MFC初学者、算法爱好者的数独游戏完整源代码,源自华为编程比赛决赛题目要求,基于Visual Studio 2008 SP1开发。资源包共84个文件,以h头文件、cpp源文件为核心,辅以sln解决方案、vcproj工程文件、r…

2026/10/15 13:05:31 阅读更多 →
HoloCubic 中的 LVGL v7.9.1 嵌入式 GUI:特性概览、硬件要求与 ESP32 移植实战

HoloCubic 中的 LVGL v7.9.1 嵌入式 GUI:特性概览、硬件要求与 ESP32 移植实战

嵌入式物联网智能硬件嵌入式GUI硬件开发 【免费下载链接】HoloCubic 带网络功能的伪全息透明显示桌面站 项目地址: https://gitcode.com/gh_mirrors/ho/HoloCubic 点击查看 免费下载 本篇技术指南围绕 HoloCubic 固件仓库中随附的 LVGL(LittlevGL&#…

2026/10/15 13:05:31 阅读更多 →
瑞萨RA4L1开发板e2studio环境搭建与最小系统验证实战

瑞萨RA4L1开发板e2studio环境搭建与最小系统验证实战

简介:本资源面向使用瑞萨RA4L1系列MCU进行嵌入式开发的工程师与学习者,基于e2studio集成开发环境,提供RA4L1评估套件的开发板测试工程。RA4L1基于支持TrustZone的Arm Cortex-M33内核,工作电压低至1.6V,待机电流低至1.6…

2026/10/15 13:04:28 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →