DeepSeek    LeetCode 3777. 使子字符串变交替的最少删除次数 Python3实现
没问题这是 LeetCode 3777 的 Python 线段树解法。核心思路完全一致通过线段树维护每个区间的左端点字符、右端点字符以及最小删除次数合并时只需检查左右相邻字符是否相同。pythonfrom typing import Listclass Solution:def minDeletions(self, s: str, queries: List[List[int]]) - List[int]:n len(s)arr list(s) # 方便原地修改字符tree [None] * (4 * n 5) # 线段树数组每个节点存 (左字符, 右字符, 删除次数)# ---------- 合并两个相邻区间 ----------def merge(left, right):if left is None:return rightif right is None:return leftlc, rc, cnt left[0], right[1], left[2] right[2]# 左区间的右端点 和 右区间的左端点 相同则必须在交界处删掉一个字符if left[1] right[0]:cnt 1return (lc, rc, cnt)# ---------- 建树 ----------def build(idx, l, r):if l r:tree[idx] (arr[l], arr[l], 0)returnmid (l r) // 2build(idx * 2, l, mid)build(idx * 2 1, mid 1, r)tree[idx] merge(tree[idx * 2], tree[idx * 2 1])# ---------- 单点更新翻转字符 ----------def update(idx, l, r, pos):if l r:# A - B 翻转arr[l] B if arr[l] A else Atree[idx] (arr[l], arr[l], 0)returnmid (l r) // 2if pos mid:update(idx * 2, l, mid, pos)else:update(idx * 2 1, mid 1, r, pos)tree[idx] merge(tree[idx * 2], tree[idx * 2 1])# ---------- 区间查询 ----------def query(idx, l, r, ql, qr):# 完全覆盖if ql l and r qr:return tree[idx]mid (l r) // 2# 只在左半部分if qr mid:return query(idx * 2, l, mid, ql, qr)# 只在右半部分if ql mid:return query(idx * 2 1, mid 1, r, ql, qr)# 跨越左右两部分需要合并left_res query(idx * 2, l, mid, ql, qr)right_res query(idx * 2 1, mid 1, r, ql, qr)return merge(left_res, right_res)# ---------- 处理查询 ----------build(1, 0, n - 1)ans []for q in queries:if q[0] 1: # 更新操作[1, index]update(1, 0, n - 1, q[1])else: # 查询操作[2, l, r]res query(1, 0, n - 1, q[1], q[2])ans.append(res[2])return ans 核心要点提醒1. 合并逻辑left.del right.del (1 if left.rc right.lc else 0) 是解题关键因为只有相邻边界会互相影响。2. 复杂度建树 O(n)每次更新或查询均为 O(log n)总复杂度 O((n q) log n)完美适配 10^5 数据量。3. 索引说明本解法默认 queries 中的下标是 0-basedLeetCode 标准如果你的环境是 1-based记得把更新和查询的索引都减 1。如果对线段树合并的推导还有疑问或者想看看其他写法比如树状数组可以随时告诉我我再给你展开讲讲。

相关新闻

解放双手!三月七小助手让你的星穹铁道日常自动化

解放双手!三月七小助手让你的星穹铁道日常自动化

解放双手!三月七小助手让你的星穹铁道日常自动化 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 还在为《崩坏:星穹铁道》中重复的日常任务感…

2026/9/22 6:31:00 阅读更多 →
三月七小助手:重新定义你的星穹铁道游戏时间管理

三月七小助手:重新定义你的星穹铁道游戏时间管理

三月七小助手:重新定义你的星穹铁道游戏时间管理 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 还在为《崩坏:星穹铁道》中繁琐的日常任务感…

2026/9/22 6:30:36 阅读更多 →
2026年AI创业新方向:BBWEYY GEO优化系统招商机会解析,含零代码SAAS、AI编程、源码定制交付

2026年AI创业新方向:BBWEYY GEO优化系统招商机会解析,含零代码SAAS、AI编程、源码定制交付

2026 AI创业观察2026年AI创业新方向:BBWEYY GEO优化系统招商机会解析生成式AI搜索改变企业获客方式,也带来新的代理服务市场AI搜索正在从新鲜功能变成真实决策入口当用户直接向AI询问品牌和服务商,企业开始关注自己是否出现、是否准确以及为何…

2026/9/21 12:06:27 阅读更多 →

最新新闻

杀了我治愈我韩剧入门到精通:版本升级后API全变了怎么破

杀了我治愈我韩剧入门到精通:版本升级后API全变了怎么破

杀了我治愈我韩剧入门到精通:版本升级后API全变了怎么破 版本升级后 API 全变了,你的代码直接崩盘?别慌,杀了我治愈我韩剧 入门到精通 的核心就是搞定这堆变更。 1. 场景与痛点:为什么你的代码在升级后失效…

2026/9/22 6:47:25 阅读更多 →
圆柱体的面积公式完整示例

圆柱体的面积公式完整示例

5分钟吃透圆柱体面积公式,避开90%面试翻车坑 配置环境就卡半天,这是很多应届生准备 实战项目 时的第一道坎。刚把Java环境跑起来,编译报错,依赖冲突,调试半天没结果,心态直接崩了。别急,这不是你笨,是方法不对。在准备面试突击时,我们常把…

2026/9/22 6:47:25 阅读更多 →
ovirt源码解析:3招搞定版本升级API变更难题

ovirt源码解析:3招搞定版本升级API变更难题

ovirt源码解析:3招搞定版本升级API变更难题 版本升级后 API 全变了,这是很多运维和开发人员在接手旧项目时最崩溃的瞬间。你以为只是换个配置文件,结果代码里满屏红叉,编译直接报错,那种无力感真的让人想摔键盘。…

2026/9/22 6:47:25 阅读更多 →
梦幻科举答案速查手册:大厂面试官拆解5大核心考点

梦幻科举答案速查手册:大厂面试官拆解5大核心考点

梦幻科举答案速查手册:大厂面试官拆解5大核心考点 刚接到面试通知,手心冒汗?别慌。最怕的不是不会写代码,而是题目一出,脑子里一片空白,连个报错栈都读不明白,更别提现场手撕算法了。很多候选人在准备《梦幻科举答案》这类高频题库时,往往陷入死记硬…

2026/9/22 6:47:25 阅读更多 →
分区魔术师 win7 实战:5步搞定旧系统最佳实践

分区魔术师 win7 实战:5步搞定旧系统最佳实践

分区魔术师 win7 实战:5步搞定旧系统最佳实践 还在为老电脑装不上新系统发愁?配置环境就卡半天,驱动缺失、分区错乱让人抓狂。别急,今天直接上干货,用代码脚本结合手动操作,带你搞定 分区魔术师 win7…

2026/9/22 6:46:25 阅读更多 →
3个标示进阶坑:新手避坑指南,选型不踩雷

3个标示进阶坑:新手避坑指南,选型不踩雷

3个标示进阶坑:新手避坑指南,选型不踩雷 官方文档翻了三遍,核心逻辑还是没看懂?别慌,这是常态。很多人卡在标示的复杂语义和版本差异上,导致项目延期甚至重构。新手避坑的第一步,不是死磕文档,而是搞清楚不同场景下该用哪套标示体系。…

2026/9/22 6:46:25 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →