当前位置: 首页 > news >正文

线段树入门:算法分析

算法分析线段树采用了分而治之的策略其点更新、区间更新、区间查询都可以在 时间内完成。树状数组和线段树都用于解决频繁修改和查询的问题树状数组比线段树更节省空间、代码简单易懂但是先单数用途更广、更加灵活凡是可以使用树状数组的问题都可以用线段树来解决。例题讲解线段树的题目并不是一成不变的对于不同的题目你可能需要修改线段树的模板来实现各种功能。区域和检索-数组可修改给你一个数组nums请你完成两类查询。其中一类查询要求更新数组nums下标对应的值另一类查询要求返回数组nums中索引left和索引right之间包含的nums元素的和其中left right实现NumArray类NumArray(int[] nums)用整数数组nums初始化对象void update(int index, int val)将nums[index]的值更新为valint sumRange(int left, int right)返回数组nums中索引left和索引right之间包含的 nums 元素的和即nums[left] nums[left 1], ..., nums[right]示例 1输入[NumArray, sumRange, update, sumRange][[[1, 3, 5]], [0, 2], [1, 2], [0, 2]]输出[null, 9, null, 8]解释NumArray numArray new NumArray([1, 3, 5]);numArray.sumRange(0, 2); // 返回 1 3 5 9numArray.update(1, 2); // nums [1,2,5]numArray.sumRange(0, 2); // 返回 1 2 5 8解题思路本题是经典的线段树模板题只需要根据之前的线段树模板稍作修改即可 将区间最值查询改为区间求和。参考代码class NumArray { public: struct sgntree{ int l,r,val; }T[120010]; vectorintnum; void build(int p,int l,int r){ T[p].ll,T[p].rr; if(lr){ T[p].valnum[l-1]; return; } int mid(lr)1; build(p1,l,mid); build(p1|1,mid1,r); T[p].valT[p1].valT[p1|1].val; } NumArray(vectorint nums) { numnums; int nnums.size(); build(1,1,n); } void Update(int p,int l,int val){ if(T[p].lT[p].rT[p].ll){ T[p].valval; return; } int mid(T[p].lT[p].r)1; if(lmid) Update(p1,l,val); else Update(p1|1,l,val); T[p].valT[p1].valT[p1|1].val; } void update(int index, int val) { Update(1,index1,val); } int query(int p,int l,int r){ if(T[p].llT[p].rr){ return T[p].val; } int mid(T[p].lT[p].r)1; if(rmid) return query(p1,l,r); if(lmid) return query(p1|1,l,r); return query(p1,l,mid)query(p1|1,mid1,r); } int sumRange(int left, int right) { return query(1,left1,right1); } }; /** * Your NumArray object will be instantiated and called as such: * NumArray* obj new NumArray(nums); * obj-update(index,val); * int param_2 obj-sumRange(left,right); */
http://www.gsyq.cn/news/1372214.html

相关文章:

  • Gemini企业社会责任实践白皮书(2024独家解密版):覆盖AI伦理、碳足迹追踪与社区赋能的3层合规架构
  • ChatGPT写不出合格投资人邮件?错!真正稀缺的是这5个私募股权语境理解层(附LP偏好词云图谱)
  • 如何发布一场投票评选活动,投票小程序操作指南 - 资讯纵览
  • 避坑指南:在Windows 11用DOSBox运行老游戏和工具,这些配置细节别忽略
  • 告别笔记本续航焦虑:手把手教你用NVMe电源管理给SSD“降频省电”
  • 企业如何利用Taotoken实现多模型API的统一管理与访问控制
  • B4A要编绎成Release发布APP/waiting for ide debugger to connect
  • 将taotoken接入openclaw agent工作流的配置要点
  • 别再傻傻卸载了!Windows Defender CPU占用高?试试这3个官方隐藏设置,轻松降下来
  • Graff平替怎么选?这5个品牌性价比碾压大牌 - 资讯纵览
  • 2026年5月有实力的电动截止阀/电动闸阀厂家推荐钢特阀门科技有限公司 - 品牌鉴赏师
  • 2026清明上河园汉服租赁保姆级横评:位置、服务与性价比谁是天花板? - 资讯纵览
  • 2026年5月黄山祁门地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026年5月济宁任城地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 喷注重组方案对比:E-scheme与WTA在抗污染与子结构分析中的应用
  • 免费一键生成证件照怎么做?2026免费工具实测推荐 - 科技大爆炸
  • 2026年5月济宁市中地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 诚信金利回收
  • 2026 成都钢管批发哪家好?四川盛世钢联全品类一站式供应更靠谱 - 四川盛世钢联营销中心
  • 别再乱改sshd_config主文件了!Ubuntu 22.04下用sshd_config.d目录的正确姿势
  • 2026长岛民宿推荐榜:本地人私藏高口碑排名指南 - 资讯纵览
  • Android App原生指令通道doCommandNative深度解析与Frida Hook实战
  • 2026 年成都 H 型钢厂家及采购优选推荐 四川盛世钢联钢厂联营资源等你来抢 - 四川盛世钢联营销中心
  • 2026贵阳装修公司排名,这5家专业又靠谱! - 资讯纵览
  • C# MQTT性能优化:工业级高可靠低带宽实战指南
  • 3分钟快速上手:通达信缠论可视化插件终极使用指南
  • 谷歌内部CSR策划SOP首次流出(非公开版):含风险预判矩阵、利益相关方触达热力图与监管审计应答话术库
  • 用 AutoGen 编排多智能体协作,让 AI 团队帮你干活
  • 快速从 Excel 文件导入 SQL 数据库的方法与分析
  • AI Agent Harness多租户数据隔离
  • 上位机知识篇---NVIDIA Jetson系列