news 2026/5/16 1:49:24

LeetCode 线段树优化题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 线段树优化题解

LeetCode 线段树优化题解

题目描述

介绍线段树的优化技巧。

线段树优化技巧

1. 懒惰传播

  • 延迟更新操作,减少不必要的更新。
  • 将更新操作记录在懒标记中,后续需要时再向下传递。

2. 离散化

  • 将大范围数据映射到小范围索引。
  • 减少线段树的空间复杂度。

3. 动态开点

  • 只在需要时创建节点。
  • 减少空间复杂度。

4. 区间合并

  • 预先计算区间合并的结果。
  • 减少查询时的计算量。

代码实现

class LazySegmentTree: def __init__(self, nums): self.n = len(nums) self.tree = [0] * (4 * self.n) self.lazy = [0] * (4 * self.n) self.build(1, 0, self.n - 1, nums) def build(self, node, l, r, nums): if l == r: self.tree[node] = nums[l] else: mid = (l + r) // 2 self.build(node * 2, l, mid, nums) self.build(node * 2 + 1, mid + 1, r, nums) self.tree[node] = self.tree[node * 2] + self.tree[node * 2 + 1] def push_down(self, node, l, r): if self.lazy[node] != 0: mid = (l + r) // 2 self.tree[node * 2] += self.lazy[node] * (mid - l + 1) self.tree[node * 2 + 1] += self.lazy[node] * (r - mid) self.lazy[node * 2] += self.lazy[node] self.lazy[node * 2 + 1] += self.lazy[node] self.lazy[node] = 0 def update(self, node, l, r, ql, qr, val): if ql > r or qr < l: return if ql <= l and r <= qr: self.tree[node] += val * (r - l + 1) self.lazy[node] += val return self.push_down(node, l, r) mid = (l + r) // 2 self.update(node * 2, l, mid, ql, qr, val) self.update(node * 2 + 1, mid + 1, r, ql, qr, val) self.tree[node] = self.tree[node * 2] + self.tree[node * 2 + 1] # 测试 def test_lazy_segment_tree(): nums = [1, 2, 3, 4, 5] lst = LazySegmentTree(nums) lst.update(1, 0, 4, 0, 2, 1) print(lst.tree[1]) # 输出:9 if __name__ == "__main__": test_lazy_segment_tree()

总结

线段树的优化技巧包括懒惰传播、离散化、动态开点和区间合并,可以提高线段树的性能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 1:47:08

告别抢票焦虑:3步配置Python自动化脚本轻松抢到演唱会门票

告别抢票焦虑&#xff1a;3步配置Python自动化脚本轻松抢到演唱会门票 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还记得那些让人心跳加速的抢票时刻吗&#xff1f;热门演唱会门票开售瞬间&a…

作者头像 李华
网站建设 2026/5/16 1:39:09

OpenShart:开源AI智能体开发框架,简化LLM应用构建

1. 项目概述&#xff1a;一个开源的AI智能体开发框架最近在AI应用开发领域&#xff0c;一个名为OpenShart的项目开始引起不少开发者的注意。这个由 bcharleson 开源的框架&#xff0c;核心目标直指一个痛点&#xff1a;如何让开发者&#xff0c;尤其是那些对大型语言模型&#…

作者头像 李华
网站建设 2026/5/16 1:37:19

AWD Watchbird:PHP Web应用防火墙深度解析与实战部署指南

AWD Watchbird&#xff1a;PHP Web应用防火墙深度解析与实战部署指南 【免费下载链接】awd-watchbird A powerful PHP WAF for AWD 项目地址: https://gitcode.com/gh_mirrors/aw/awd-watchbird AWD Watchbird 是一款专为PHP Web应用设计的高性能防火墙&#xff0c;特别…

作者头像 李华
网站建设 2026/5/16 1:36:47

U盘接口断裂,资料全没?别慌!专业数据恢复案例详解

老师的U盘被学生撞断接口&#xff0c;本以为几年心血付之东流&#xff0c;没想到……前言前几天接到一个紧急的数据恢复需求——一位学校老师的U盘被学生不小心撞断了接口&#xff0c;直接从根部断裂&#xff0c;电脑完全无法识别。老师焦急地告诉我&#xff0c;里面存着几年的…

作者头像 李华
网站建设 2026/5/16 1:35:24

2026年AI招聘系统厂商榜单:TOP10完整排名与深度评析

2026年&#xff0c;AI招聘系统已经从“可选”变成“必选”。但市面上的系统五花八门&#xff0c;到底哪家真正能打&#xff1f;我们综合产品力、市场占有率、客户口碑和AI技术深度&#xff0c;发布了这份年度榜单。行业开篇&#xff1a;AI招聘&#xff0c;从锦上添花到不可或缺…

作者头像 李华
网站建设 2026/5/16 1:34:18

AI智能体开发利器:zstar-mcp-server工具集深度解析与实战指南

1. 项目概述&#xff1a;一个为AI智能体打造的“工具箱”最近在折腾AI智能体&#xff08;Agent&#xff09;的开发&#xff0c;发现一个挺有意思的现象&#xff1a;很多智能体框架功能强大&#xff0c;但真要让它去干点“实事”&#xff0c;比如操作一下本地文件、查查数据库&a…

作者头像 李华