Kimi    LeetCode 3485. 删除元素后 K 个字符串的最长公共前缀 Java实现
以下是 LeetCode 3485 删除元素后 K 个字符串的最长公共前缀 的 Java 实现。思路核心思路是 Trie 线段树1. 构建 Trie将所有字符串插入字典树每个节点记录 count经过该节点的字符串数和 depth前缀长度。2. 统计有效深度对于每个深度 d统计有多少个 Trie 节点的 count k。若该数量 0则深度 d 是一个候选答案存在至少 k 个字符串共享长度为 d 的前缀。3. 线段树维护用线段树维护每个深度是否有效有效则值为深度 d否则为 -1支持单点更新和全局最大值查询。4. 删除模拟对于每个单词找到它在 Trie 路径上所有 count k 的节点称为 fragile 节点。删除该单词时这些节点的 count 会变为 k-1不再满足条件。临时更新线段树后查询最大值即可得到删除该单词后的答案然后恢复。时间复杂度 O(L · log D)其中 L Σ|words[i]| ≤ 1e5D maxDepth ≤ 1e5。---Java 代码javaimport java.util.*;class Solution {public int[] longestCommonPrefix(String[] words, int k) {int n words.length;int[] ans new int[n];// 删除后剩余不足 k 个直接全 0if (n - 1 k) {return ans;}// ---------- 1. 构建 Trie ----------TrieNode root new TrieNode();for (String word : words) {TrieNode node root;for (char c : word.toCharArray()) {int idx c - a;if (node.children[idx] null) {node.children[idx] new TrieNode();node.children[idx].depth node.depth 1;}node node.children[idx];node.count;}}// ---------- 2. BFS 收集所有节点求 maxDepth ----------ListTrieNode allNodes new ArrayList();QueueTrieNode queue new LinkedList();queue.offer(root);while (!queue.isEmpty()) {TrieNode node queue.poll();if (node ! root) {allNodes.add(node);}for (int i 0; i 26; i) {if (node.children[i] ! null) {queue.offer(node.children[i]);}}}int maxDepth 0;for (TrieNode node : allNodes) {if (node.count k) {maxDepth Math.max(maxDepth, node.depth);}}// 没有任何前缀被 k 个字符串共享if (maxDepth 0) {return ans;}// globalCount[d] 深度 d 上 count k 的节点数量int[] globalCount new int[maxDepth 1];for (TrieNode node : allNodes) {if (node.count k node.depth maxDepth) {globalCount[node.depth];}}// ---------- 3. 找每个单词的 fragile depths ----------// fragile: 路径上 count k 的节点深度删除后该节点会失效ListInteger[] fragile new ArrayList[n];for (int i 0; i n; i) {fragile[i] new ArrayList();TrieNode node root;for (char c : words[i].toCharArray()) {node node.children[c - a];if (node.count k) {fragile[i].add(node.depth);}}}// ---------- 4. 线段树维护每个深度是否有效 ----------SegmentTree seg new SegmentTree(maxDepth, globalCount);// ---------- 5. 枚举删除每个单词 ----------for (int i 0; i n; i) {// 临时删除fragile 深度上的有效节点数减 1for (int d : fragile[i]) {seg.update(1, 1, maxDepth, d, globalCount[d] - 1);}int res seg.query();ans[i] res -1 ? 0 : res;// 恢复for (int d : fragile[i]) {seg.update(1, 1, maxDepth, d, globalCount[d]);}}return ans;}// Trie 节点class TrieNode {TrieNode[] children new TrieNode[26];int count 0; // 经过该节点的字符串数int depth 0; // 该节点代表的前缀长度}// 线段树维护每个深度是否有效查询最大有效深度class SegmentTree {int n;int[] tree;int[] globalCount;SegmentTree(int n, int[] globalCount) {this.n n;this.globalCount globalCount;this.tree new int[4 * (n 1)];build(1, 1, n);}void build(int node, int l, int r) {if (l r) {tree[node] globalCount[l] 0 ? l : -1;return;}int mid (l r) 1;build(node 1, l, mid);build(node 1 | 1, mid 1, r);tree[node] Math.max(tree[node 1], tree[node 1 | 1]);}// 将位置 pos 的值更新为 valval 为该深度上 count k 的节点数void update(int node, int l, int r, int pos, int val) {if (l r) {tree[node] val 0 ? l : -1;return;}int mid (l r) 1;if (pos mid) {update(node 1, l, mid, pos, val);} else {update(node 1 | 1, mid 1, r, pos, val);}tree[node] Math.max(tree[node 1], tree[node 1 | 1]);}// 查询全局最大有效深度int query() {return tree[1];}}}---复杂度分析指标 复杂度时间 O(L · log D)其中 L Σ\|words[i]\| ≤ 1e5D maxDepth ≤ 1e5空间 O(L D)Trie 节点数 线段树 辅助数组该解法通过 Trie 精确追踪每个前缀的覆盖次数配合线段树实现高效的删除-查询-恢复是此题的标准最优解。

相关新闻

Kimi    LeetCode 3480. 删除一个冲突对后最大子数组数目 C语言实现

Kimi LeetCode 3480. 删除一个冲突对后最大子数组数目 C语言实现

以下是 LeetCode 3480 删除一个冲突对后最大子数组数目 的 C 语言实现。思路核心思路是枚举子数组右端点,维护当前最严格和次严格的冲突限制:1. 预处理:将每个冲突对 (a, b) 按较大值(即右端点)分组。对于子数组右端点…

2026/7/6 13:46:28阅读更多 →
agno-6-rag

agno-6-rag

什么是 RAG RAG(Retrieval Augmented Generation,检索增强生成) 是一种结合了信息检索和文本生成的技术,它通过在生成回答之前先从外部知识源检索相关信息,来增强大型语言模型(LLM)的能力。 RAG…

2026/7/6 13:46:28阅读更多 →
耐火 + 高防护母线槽结构解析:加厚绝缘、厚铝合金外壳、密封散热设计要点

耐火 + 高防护母线槽结构解析:加厚绝缘、厚铝合金外壳、密封散热设计要点

耐火 高防护母线槽结构解析:加厚绝缘、厚铝合金外壳、密封散热设计要点一、前言化工厂区、地下车库、高层建筑消防配电,对母线槽耐火性能、防尘防水防护等级要求严苛。母线槽外壳、绝缘层、散热密封结构是防火防水能力的核心载体。本文结合扬中金展电气…

2026/7/6 13:41:27阅读更多 →
R-CNN系列演进对比:从53.7%到73.2% mAP,3代模型速度与精度量化分析

R-CNN系列演进对比:从53.7%到73.2% mAP,3代模型速度与精度量化分析

R-CNN系列演进对比:从53.7%到73.2% mAP,3代模型速度与精度量化分析目标检测技术在过去十年经历了革命性突破,其中R-CNN系列算法的演进轨迹尤为典型。本文将深入剖析三代模型的架构革新与性能跃迁,通过量化指标揭示每次改进背后的技…

2026/7/6 14:56:41阅读更多 →
告别“盲巡漏检”!RFID技术如何终结电力巡检的老大难?

告别“盲巡漏检”!RFID技术如何终结电力巡检的老大难?

电力设备巡检,是保障电网安全的第一道防线。然而,传统的人工巡检模式长期面临三大“顽疾”:一是“到位”难核实,巡检人员是否按路线、按时点检,管理者往往“两眼一抹黑”;二是“记录”难规范,手…

2026/7/6 14:56:41阅读更多 →
新手友好!基于零代码平台浏览器市场与用户画像分析-用户画像数据大屏与大屏交互制作全流程演示

新手友好!基于零代码平台浏览器市场与用户画像分析-用户画像数据大屏与大屏交互制作全流程演示

一、实验背景1.1 实验目的本实验依次围绕浏览器用户画像分析大屏开展三项递进式实践:首先基于已加工的用户画像统计表(user_profile_stats)完成大屏静态布局设计;接着依托已完成的静态布局,使用助睿 Max 蓝图编辑器接入…

2026/7/6 14:56:41阅读更多 →
iStoreOS网络配置终极指南:7个实用技巧快速提升上网体验

iStoreOS网络配置终极指南:7个实用技巧快速提升上网体验

iStoreOS网络配置终极指南:7个实用技巧快速提升上网体验 【免费下载链接】istoreos 提供一个人人会用的的路由、NAS系统 (目前活跃的分支是 istoreos-24.10,main或master分支不维护请勿使用) 项目地址: https://gitcode.com/gh_…

2026/7/6 14:56:41阅读更多 →
1分钟带你搞懂华为韬(τ)定律

1分钟带你搞懂华为韬(τ)定律

前两天被刷屏了吧?认识韬(τ)定律先从认识它的读音开始跟我念特奥 tao 一声,韬(τ)定律好了,你已经懂读音了,可以点右上角关闭了言归正传,韬(τ)定…

2026/7/6 14:56:41阅读更多 →
【吃透 MySQL InnoDB连载】第 3 章・InnoDB 锁机制

【吃透 MySQL InnoDB连载】第 3 章・InnoDB 锁机制

第 3 章 InnoDB 锁机制事务隔离解决了业务数据错乱、并发读写异常的表象问题,锁,是 InnoDB 实现事务隔离、协调并发竞争、保障数据一致性的核心底层支撑。上一章我们站在业务视角,梳理了更新丢失、脏读、不可重复读、幻读等线上并发故障现象&…

2026/7/6 14:51:40阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →