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/9/25 11:14:52 阅读更多 →
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 阅读更多 →

最新新闻

空间域图像增强实战指南:灰度变换与直方图处理核心原理与调参技巧

空间域图像增强实战指南:灰度变换与直方图处理核心原理与调参技巧

拿到《数字图像处理》第三章“空间域图像增强(灰度变换和直方图处理)”这个标题,很多人的第一反应是翻课本对着公式背,但真正拿到一张模糊、偏暗、对比度极低的图,往往又不知道怎么下手。我当年在某个图像处理Demo项目…

2026/10/15 12:21:56 阅读更多 →
Spring AI实战:构建智能IDE插件的架构与优化

Spring AI实战:构建智能IDE插件的架构与优化

1. 项目背景与核心价值最近在团队内部做代码评审时,发现一个很有意思的现象:即使是经验丰富的Java开发者,在编写某些特定场景的代码时(比如复杂的Stream操作或者Spring事务嵌套),也常常需要反复查阅文档或搜…

2026/10/15 12:21:56 阅读更多 →
解决报错CC Switch local proxy failed while handling Codex endpoint /responses:把 endpoint 改到 TaoToken 的排查

解决报错CC Switch local proxy failed while handling Codex endpoint /responses:把 endpoint 改到 TaoToken 的排查

/* 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 12:21:56 阅读更多 →
Python 通过 python-snap7 读写西门子 S7-300/400 PLC 实战指南

Python 通过 python-snap7 读写西门子 S7-300/400 PLC 实战指南

简介:这份资源面向需要用 Python 与西门子 S7-300、S7-400 系列 PLC 通信的工程师与学习者,通过 TCP/IP 直连方式实现数据读写,省去依赖专用组态软件的麻烦。压缩包共 12 个文件,约 910KB,包含 3 个 py 脚本与 2 个 py…

2026/10/15 12:21:56 阅读更多 →
【AI大模型】生产环境吞吐优化方案

【AI大模型】生产环境吞吐优化方案

【AI大模型】生产环境吞吐优化方案 生产环境部署大模型时,吞吐往往比单请求延迟更影响成本和体验。吞吐上不去,要么算力闲置、要么队列堆积。本文围绕一个核心问题展开:在显存和算力给定的条件下,如何最大化单位时间完成的请求数与生成 token 数。先讲清瓶颈在哪,再按调度…

2026/10/15 12:21:56 阅读更多 →
MCP与A2A:构建可工程化落地的多Agent系统

MCP与A2A:构建可工程化落地的多Agent系统

1. 这不是概念炒作,是工程落地的分水岭“多 Agent、MCP、A2A——最该补的一堂课”,这标题乍看像培训广告,实则戳中了当前智能系统开发里最真实、最普遍、也最容易被忽视的断层。我带过七支不同行业的AI工程团队,从金融风控后台到工…

2026/10/15 12:20:55 阅读更多 →

日新闻

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 阅读更多 →