Kimi LeetCode 3425. 最长特殊路径 Python3实现
📅 2026/6/30 22:44:28
👁️ 次浏览
以下是 LeetCode 3425. 最长特殊路径 的 Python3 实现。---解题思路这道题的核心是 DFS 滑动窗口树上的双指针时间复杂度 O(n)空间复杂度 O(n)。关键观察1. 特殊路径的定义路径上所有节点的值互不相同。这等价于无重复元素的最长子数组问题在树上的扩展。2. 为什么用滑动窗口 从根节点出发 DFS维护当前路径上的节点值集合。当遇到重复值时需要收缩左边界直到没有重复值为止。这和数组上的无重复元素最长子数组问题本质相同。3. 具体实现- prefix 数组记录从根到当前节点的路径长度前缀和prefix[i] 表示深度为 i 的节点到根的路径长度- lastSeenDepth字典记录每个节点值最后出现的深度- leftBoundary当前窗口的左边界深度确保 [leftBoundary, currentDepth] 内无重复值4. 路径长度计算length prefix[currentDepth] - prefix[leftBoundary]节点数 currentDepth - leftBoundary---Python3 完整代码pythonfrom typing import Listclass Solution:def longestSpecialPath(self, edges: List[List[int]], nums: List[int]) - List[int]:n len(nums)# 建图邻接表存储 (邻居节点, 边权)graph [[] for _ in range(n)]for u, v, w in edges:graph[u].append((v, w))graph[v].append((u, w))# 答案变量maxLength 0minNodes 1# prefix[i] 从根节点到深度为 i 的节点的路径长度prefix [0]# lastSeenDepth[val] 节点值 val 最后出现的深度lastSeenDepth {}def dfs(u: int, prev: int, leftBoundary: int) - None:nonlocal maxLength, minNodes# 记录当前节点值之前出现的深度prevDepth lastSeenDepth.get(nums[u], 0)# 更新当前节点值的最后出现深度lastSeenDepth[nums[u]] len(prefix)# 收缩左边界确保 [leftBoundary, currentDepth] 内无重复值leftBoundary max(leftBoundary, prevDepth)# 计算当前路径的长度和节点数length prefix[-1] - prefix[leftBoundary]nodes len(prefix) - leftBoundary# 更新答案优先更长路径长度相同时更少节点数if length maxLength or (length maxLength and nodes minNodes):maxLength lengthminNodes nodes# 遍历所有子节点for v, w in graph[u]:if v prev:continue# 将子节点加入路径prefix.append(prefix[-1] w)dfs(v, u, leftBoundary)prefix.pop() # 回溯# 回溯恢复当前节点值的最后出现深度lastSeenDepth[nums[u]] prevDepth# DFS 从根节点 0 开始dfs(0, -1, 0)return [maxLength, minNodes]---测试验证输入 输出 说明edges[[0,1,2],[1,2,3],[1,3,5],[1,4,4],[2,5,6]], nums[2,1,2,1,3,1] [6, 2] 最长路径 2→5长度62个节点和 0→1→4长度63个节点取最少节点数 2edges[[1,0,8]], nums[2,2] [0, 1] 两节点值相同只能选单个节点edges[], nums[5] [0, 1] 单节点edges[[0,1,1],[1,2,1],[2,3,1]], nums[1,2,3,4] [3, 4] 链状树无重复值edges[[0,1,1],[0,2,1],[1,3,1],[1,4,1]], nums[1,2,1,3,4] [2, 3] 有重复值需要收缩窗口下载完整代码[leetcode_3425.py](sandbox:///mnt/agents/output/leetcode_3425.py)
以下是 LeetCode 3425. 最长特殊路径 的 Java 实现。---解题思路这道题的核心是 DFS 滑动窗口(树上的双指针),时间复杂度 O(n),空间复杂度 O(n)。关键观察1. 特殊路径的定义:路径上所有节点的值互不相同。这等价于&qu…
📅 2026/6/30 22:44:28
以下是 LeetCode 3420. 统计 K 次操作以内得到非递减子数组的数目 的 C 实现。---解题思路这道题的核心是 从右往左滑动窗口 单调队列,时间复杂度 O(n),空间复杂度 O(n)。关键观察1. 单调性:如果一个子数组 [i, j] 可以在 k 次操作内变为非递…
📅 2026/6/30 22:44:28
嵌入式开发实战:IMX6ULL开发板RTL8723BU网卡驱动全流程解析刚拿到韦东山IMX6ULL开发板时,配置无线网络往往是第一个需要攻克的难题。不同于PC环境,嵌入式设备的WiFi驱动需要针对特定内核版本进行交叉编译,整个过程涉及环境配置、源…
📅 2026/6/30 22:44:28
国家中小学智慧教育平台电子课本下载工具:轻松获取离线教材的完整指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内…
📅 2026/6/30 23:50:37
C STL 之 optional、variant 与 any 详解
一、问题
C 类型系统在 C17 之前有三大短板:
函数返回值无法优雅表达"可能无值"——传统做法用指针(可能空悬)或哨兵值(如 -1、nullptr),语义含混且易误…
📅 2026/6/30 23:50:37
C STL 之 iostream 深度解析
1. iostream 继承层次
#mermaid-svg-nsEMecHXDpa5h9fc{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dasho…
📅 2026/6/30 23:50:37
状态转移公式(递推公式)是很重要,但动规不仅仅只有递推公式。
对于动态规划问题,可以拆解为如下五步曲:
确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推…
📅 2026/6/30 23:50:37
C STL之互斥锁与条件变量详解
一、从数据竞争说起
多线程同时读写同一内存,结果不确定,这就是数据竞争。C 标准库提供了 mutex 系列锁和 condition_variable 来解决线程同步问题。从 C11 到 C17,同步原语逐步完善,每个都有明确的适…
📅 2026/6/30 23:50:37
源代码数据库LW文档(1万字以上)开题报告答辩稿ppt部署教程代码讲解代码时间修改工具
技术实现
开发语言:后端:Java 前端:vue框架:springboot数据库:mysql
开发工具
JDK版本:JDK1.8
数…
📅 2026/6/30 23:48:37
如何永久备份微信聊天记录:本地化数据管理完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…
📅 2026/6/30 0:01:32
Mate Engine技术深度解析:开源VRM虚拟桌面伴侣的架构与实现 【免费下载链接】Mate-Engine A free Desktop Mate alternative with a lightweight interface and custom VRM support, though with more features. 项目地址: https://gitcode.com/gh_mirrors/ma/Mat…
📅 2026/6/30 0:01:32
专业级Windows系统优化工具:WinUtil一站式自动化解决方案 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil
Windows系统管理长期以来…
📅 2026/6/30 0:01:32
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/6/30 10:04:37
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/6/30 6:54:54