DeepSeek LeetCode 3585. 树中找到带权中位节点 Python3实现
📅 2026/7/16 8:50:03
👁️ 次浏览
解题思路核心思想利用树上倍增LCA 二分跳跃在 O(log n) 时间内回答每个查询。1. 预处理· 以节点 0 为根DFS 计算每个节点的深度 depth[]、到根的距离 dist[]边权和以及倍增祖先表 parent[k][u]表示 u 的 2^k 级祖先。· 树中边权为正因此路径距离单调递增。2. 查询处理(u, v)· 若 u v答案就是 u。· 求 u 和 v 的 LCA l计算路径总权值 total dist[u] dist[v] - 2*dist[l]取半阈值 half (total 1) // 2向上取整。· 情况一中位节点在 u → l 这一段即 dist[u] - dist[l] half。从 u 向上跳找到最后一个满足 dist[u] - dist[ancestor] half 的祖先答案就是该祖先的父节点。· 情况二中位节点在 l → v 这一段。先计算 need half - (dist[u] - dist[l])表示从 l 向下还需走的权值。从 v 向上跳找到最浅最靠近 l的满足 dist[ancestor] - dist[l] need 的祖先该祖先即为答案。---Python3 实现pythonfrom typing import Listclass Solution:def findMedian(self, n: int, edges: List[List[int]], queries: List[List[int]]) - List[int]:# 建图邻接表adj [[] for _ in range(n)]for u, v, w in edges:adj[u].append((v, w))adj[v].append((u, w))LOG (n).bit_length() 1 # 倍增表大小parent [[-1] * n for _ in range(LOG)]depth [0] * ndist [0] * n# 迭代 DFS 预处理避免递归深度问题stack [(0, -1, 0, 0)] # (node, parent, depth, distance)while stack:u, p, d, w stack.pop()parent[0][u] pdepth[u] ddist[u] wfor v, wt in adj[u]:if v p:continuestack.append((v, u, d 1, w wt))# 构建倍增表for k in range(1, LOG):prev parent[k - 1]curr parent[k]for i in range(n):anc prev[i]curr[i] prev[anc] if anc ! -1 else -1# ---------- 辅助函数 ----------def kth_ancestor(u: int, k: int) - int:返回 u 的第 k 级祖先k 0若不存在返回 -1i 0while k:if k 1:u parent[i][u]if u -1:breakk 1i 1return udef lca(u: int, v: int) - int:返回 u 和 v 的最近公共祖先if depth[u] depth[v]:u, v v, u# 提升 u 至与 v 同深度u kth_ancestor(u, depth[u] - depth[v])if u v:return u# 一起向上跳for 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]def weighted_median(u: int, v: int) - int:if u v:return ul lca(u, v)total dist[u] dist[v] - 2 * dist[l]half (total 1) // 2 # 向上取整# 情况 1中位节点在 u - l 段if dist[u] - dist[l] half:cur ufor k in range(LOG - 1, -1, -1):nxt parent[k][cur]if nxt ! -1 and dist[u] - dist[nxt] half:cur nxtreturn parent[0][cur]# 情况 2中位节点在 l - v 段else:need half - (dist[u] - dist[l])cur vfor k in range(LOG - 1, -1, -1):nxt parent[k][cur]if (nxt ! -1 and depth[nxt] depth[l] anddist[nxt] - dist[l] need):cur nxtreturn cur# 处理所有查询return [weighted_median(u, v) for u, v in queries]---复杂度分析· 时间复杂度预处理 O(n log n)每个查询 O(log n)总复杂度 O((n q) log n)。· 空间复杂度邻接表 O(n)倍增表 O(n log n)总复杂度 O(n log n)。注意边权和路径总权值可能超过 32 位整数范围Python 的 int 无此限制无需额外处理。
这是 LeetCode 3579(困难)的 C 实现。核心思路是 划分型 DP 贪心匹配。核心思路1. 划分型 DP:f[i] 表示将 word1[0..i-1] 转换为 word2[0..i-1] 的最小操作数。枚举最后一个子串的起始位置 j,状态转移为:f[i] min(f[…
📅 2026/7/16 8:50:03
1. MCU与智能传感器融合的核心价值 在嵌入式系统开发领域,MCU(微控制器单元)与智能传感器的协同工作已经成为现代物联网设备的标配方案。这种组合之所以重要,是因为它解决了传统单一传感器系统的三大痛点:数据可靠性低…
📅 2026/7/16 8:50:03
1. 项目概述:当MetaHuman-Stream遇上Blackwell新架构 最近不少同行都在讨论MetaHuman-Stream这个工具,尤其是在NVIDIA刚刚发布RTX 50系列显卡之后。作为一个长期折腾实时数字人渲染和流媒体技术的从业者,我第一时间就搞到了一块RTX 5080&…
📅 2026/7/16 8:50:03
GTA5线上小助手:完全免费的一站式游戏增强工具终极指南 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools
还在为GTA5线上模式的复杂操作而烦恼吗?想要轻松定制角色外观、快速完成任…
📅 2026/7/16 10:51:08
5个简单步骤免费在线畅玩植物大战僵尸2 Web游戏 【免费下载链接】pvzg_site PvZ2 Gardendless Official Website | A rewritten Plants vs Zombies 2 PC port 项目地址: https://gitcode.com/gh_mirrors/pv/pvzg_site
你想在浏览器中免费体验经典的《植物大战僵尸2》吗&…
📅 2026/7/16 10:51:08
1. 中文分词与双向最大匹配法入门 第一次接触中文分词时,我被一个简单的问题难住了:计算机怎么知道"研究生命的起源"应该分成"研究/生命/的/起源",而不是"研究生/命/的/起源"?这个看似简单的任务&a…
📅 2026/7/16 10:51:08
1. 为什么我们需要科学创新思考技术在这个信息爆炸的时代,传统思维方式已经难以应对复杂多变的现实挑战。科学创新思考技术不是简单的"灵光一现",而是一套系统化的思维工具和方法论。它能够帮助我们突破思维定式,在看似无关的事物间…
📅 2026/7/16 10:51:08
🦞教程适配:OpenClaw v2.7.9 | 适配 Windows10/11、macOS 双系统 内容亮点:全程可视化图形操作、自动补齐全套运行依赖、本地设备独立存储数据、兼容多款主流大模型、轻量化 45.7MB 整合压缩包 📖前言
当下各类本地 AI 工具层出不…
📅 2026/7/16 10:51:08
那天晚上十一点,我盯着屏幕上的Logcat,眼睛酸得想滴眼药水。项目里有个地图跳转功能,死活调不通。客户在那头催得紧,说用户反馈点击按钮没反应。我这边查了半天,权限给了,代码也没报错,就是没动静。心里那个急啊,像是有只蚂蚁在挠心窝子。后来灵机一动,想起了那个被很…
📅 2026/7/16 10:50:31
1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…
📅 2026/7/16 0:00:02
前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…
📅 2026/7/16 0:00:02
1. 项目概述与核心价值 在高速数字系统、通信设备乃至精密测量仪器中,一个稳定、纯净且可精确调控的时钟信号,往往是整个系统稳定运行的“心跳”。无论是确保数据在光纤中无误传输,还是让ADC/DAC芯片精准采样,亦或是让多块FPGA板卡…
📅 2026/7/16 0:00:02
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/15 14:09:20
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/16 4:59:31
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03