千问    LeetCode 307.区域和检索 - 数组可修改 Java实现
LeetCode 307 题「区域和检索 - 数组可修改」是一道经典的数据结构设计题要求实现一个类支持单点更新和区间求和两种操作。为什么不能用普通前缀和如果使用前缀和数组sumRange 查询是 O(1)但 update 更新一个元素后需要 O(n) 时间更新所有后续的前缀和。本题中更新和查询操作频繁交替最坏情况下会达到 O(n²)因此需要用更高效的数据结构。核心解法树状数组 (Binary Indexed Tree)树状数组是最推荐的解法代码短、常数小、效率高。它利用二进制分解的思想将前缀和拆分为若干子区间使得更新和查询都达到 O(log n) 的时间复杂度。核心操作· lowbit(i) i (-i)取最低位的 1 及其后面的 0· 更新从 i 开始不断 i lowbit(i)修改对应节点· 查询前缀和从 i 开始不断 i - lowbit(i)累加对应节点· 区间和sumRange(l, r) query® - query(l-1)Python 实现classNumArray:def__init__(self,nums):self.nlen(nums)self.numsnums[:]self.tree[0]*(self.n1)fori,numinenumerate(nums):self._add(i1,num)def_add(self,i,delta):whileiself.n:self.tree[i]delta ii(-i)def_prefix_sum(self,i):s0whilei0:sself.tree[i]i-i(-i)returnsdefupdate(self,index,val):deltaval-self.nums[index]self.nums[index]val self._add(index1,delta)defsumRange(self,left,right):returnself._prefix_sum(right1)-self._prefix_sum(left)Java 实现模板可直接背诵classNumArray{int[]tree;int[]nums;intn;publicNumArray(int[]nums){this.nnums.length;this.numsnums.clone();this.treenewint[n1];for(inti0;in;i){add(i1,nums[i]);}}privateintlowbit(intx){returnx-x;}privatevoidadd(inti,intdelta){while(in){tree[i]delta;ilowbit(i);}}privateintquery(inti){intans0;while(i0){anstree[i];i-lowbit(i);}returnans;}publicvoidupdate(intindex,intval){intdeltaval-nums[index];nums[index]val;add(index1,delta);}publicintsumRange(intleft,intright){returnquery(right1)-query(left);}}其他解法线段树 (Segment Tree)每个节点维护一个区间的和更新和查询也是 O(log n)。功能比树状数组更强但代码更长、常数更大。本题用树状数组即可线段树作为拓展了解。分块 (Sqrt Decomposition)将数组分成若干块每块维护块内和。update 为 O(1)更新元素和块和sumRange 为 O(√n)。适合作为简单易懂的替代方案但效率不如树状数组。复杂度对比方法 update sumRange 代码量前缀和 O(n) O(1) 短树状数组 O(log n) O(log n) 短线段树 O(log n) O(log n) 长分块 O(1) O(√n) 中等总结本题优先选择树状数组它是「单点修改 区间求和」场景下的标准最优解。建议将树状数组的模板背熟遇到类似题目可以直接套用。

相关新闻

UE5 UMG图表插件实战:纯C++绘制曲线、饼图、环状图与柱状图

UE5 UMG图表插件实战:纯C++绘制曲线、饼图、环状图与柱状图

简介:这是一款面向Unreal Engine5开发者的UMG图表控件插件,专为游戏与虚拟现实项目提供纯UMG实现的数据可视化方案,无需WebBrowser或WebUI嵌套,通过C与蓝图即可完成图表搭建。插件覆盖曲线图、饼图、环状图与柱状图四类常用图表&a…

2026/10/12 6:22:43 阅读更多 →
零基础实战Vibe Coding:普通人用AI从0到1做出小工具

零基础实战Vibe Coding:普通人用AI从0到1做出小工具

最近一年被问得特别多的一句话是:"我完全没写过代码,现在让 AI 帮我做个小工具,到底靠不靠谱?"以前听到这种问题,我一般会说你先去补点基础再谈。但这两年 Vibe Coding 这个概念火起来以后,我的答…

2026/10/12 6:22:43 阅读更多 →
从Pi到DSH:Agent Harness如何实现自生长与经验进化

从Pi到DSH:Agent Harness如何实现自生长与经验进化

1. 从"能插拔"到"会进化":Agent Harness 到底在解决什么问题如果你最近在折腾 AI Agent 相关的东西,大概率会碰到一个很尴尬的局面:模型能力明明够用,但整个系统跑起来就是"死板"。加一个新工具要改…

2026/10/12 6:22:43 阅读更多 →

最新新闻

DeepSeek开源算力地基:FlashMLA与DeepEP如何加速国产大模型?

DeepSeek开源算力地基:FlashMLA与DeepEP如何加速国产大模型?

先说明一下我的第一反应:看到“致敬,DeepSeek 最新开源的不是模型,是国产算力的地基”这个标题,我以为是又一个大模型权重开源了。结果点进仓库一看,里面没有模型文件,躺着的全是 FlashMLA、DeepEP、DeepGE…

2026/10/12 7:08:08 阅读更多 →
NumPy随机函数与广播机制:维度对齐、代码实战与踩坑全解

NumPy随机函数与广播机制:维度对齐、代码实战与踩坑全解

【day 48】随机函数与广播机制,打卡到这个组合的时候,我明显感觉身边不少同学开始卡壳了:随机函数单独用没问题,广播规则单独看也能理解,但真到写代码的时候,要么随机生成的数组形状对不上,要么…

2026/10/12 7:08:08 阅读更多 →
MTCNN人脸检测详解:P-Net、R-Net、O-Net三级网络训练与部署实战

MTCNN人脸检测详解:P-Net、R-Net、O-Net三级网络训练与部署实战

简介:面向深度学习和计算机视觉研究者,这份完整代码基于MTCNN级联卷积网络实现人脸检测,清晰覆盖P-Net候选框提议、R-Net边界框精修、O-Net关键点定位的完整流程。包体共80个文件,以Python源码为核心,包含48个py文件&a…

2026/10/12 7:08:08 阅读更多 →
物联网通信技术选型与架构设计:从链路预算到协议栈的工程实践指南

物联网通信技术选型与架构设计:从链路预算到协议栈的工程实践指南

干了十几年通信,最明显的感觉是:打电话的人越来越少,问"能不能帮我把这个箱子里的定位数据传回来"的人越来越多。物联网这个概念被炒了很多年,别人看到的是智能家居、智慧城市、大风口,我看到的是另一件事—…

2026/10/12 7:08:08 阅读更多 →
MyBatis查询功能全解析:从动态SQL到性能优化的实战指南

MyBatis查询功能全解析:从动态SQL到性能优化的实战指南

项目标题: MyBatis各种查询功能用到一定年头你就会发现,MyBatis的查询功能说难不难,说简单也绝不是写个select标签就完事。日常开发里,动态条件、分页、多表嵌套、批量操作,任何一个场景都能写出好几种不同写法,而每种…

2026/10/12 7:08:08 阅读更多 →
老毛桃UEFI启动盘v7.0:稳过Secure Boot,原生支持NVMe与Win11架构识别

老毛桃UEFI启动盘v7.0:稳过Secure Boot,原生支持NVMe与Win11架构识别

简介:老毛桃U盘启动盘制作工具(UEFI版 装机版)v7.0是一款面向电脑初学者与系统维护人员的轻量级系统辅助工具,专为快速制作兼容UEFI与传统BIOS的U盘启动盘、安装原版Windows系统及执行PE环境下的故障排查而设计。资源包共2个文件&…

2026/10/12 7:07:08 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →