303. 区域和检索 - 数组不可变

思路

  • 初始化的时候计算 sum[i] = sum[i-1] + nums[i];
  • sum[r] = a[1] + a[2] + a[3] + a[l-1] + a[l] + a[l + 1] ...... a[r];
  • sum[l - 1] = a[1] + a[2] + a[3] + a[l - 1];
  • sum[r] - sum[l - 1] = a[l] + a[l + 1] + ......+ a[r];
  • 所以对于每次查询计算从下标 l 到 r 的和,只需执行 sum[r] - sum[l - 1] ,时间复杂度为O(1)。
  • 注意下标 l 如果是 0, 即计算从 0 到 r 的和,那相当于直接返回 sum[r] 。

代码

class NumArray {public:NumArray(vector<int>& nums) {this->sum.push_back(nums[0]);for(int i = 1; i < nums.size(); i++){this->sum.push_back(nums[i] + sum[i-1]);}}int sumRange(int left, int right) {if(left == 0) return this->sum[right];return (this->sum[right] - this->sum[left-1]);}
private:vector<int> sum;
};/*** Your NumArray object will be instantiated and called as such:* NumArray* obj = new NumArray(nums);* int param_1 = obj->sumRange(left,right);*/

前缀和 专题一(入门篇)相关推荐

  1. python 柱状图 间距_专题第18篇:Python 绘图入门

    我的施工之路 1我的施工计划2数字专题3字符串专题4列表专题5流程控制专题6编程风格专题7函数使用8面向对象编程(上篇)9面向对象编程(下篇)10十大数据结构11包和模块使用总结12Python正则专 ...

  2. Hololens开发入门篇-郑洪智-专题视频课程

    Hololens开发入门篇-572人已学习 课程介绍         本课程使用Hololens模拟器,基于Unity2017.2及Visual Studio 2017开发 课程收益     学会Ho ...

  3. 跟着王进老师学开发之Python篇第一季:基础入门篇-王进-专题视频课程

    跟着王进老师学开发之Python篇第一季:基础入门篇-2859人已学习 课程介绍         本季课程首先对Python简要介绍,然后演示如何搭建Python的开发环境,以及如何在IDE中调试Py ...

  4. python语言自学教程-3D图示Python标准自学教程入门篇

    内容简介: Python入门篇教程从最基础的计算机发展史.Python的来源与发展历史开始讲起: 依次讲解python变量与表达式.数据类型.运算符.流程控制语句等,末尾通过课堂练习.课后作业以及微型 ...

  5. JavaScript从入门到精通之入门篇(二)函数和数组

    入门篇大纲 第二部分 函数与数组 1.函数 函数的定义 普通函数 function 函数名 (表达式1-) { 代码块 } js是解释性语言,在当前script标签代码执行的开始阶段,就会将普通函数放 ...

  6. python自学教程-3D图示Python标准自学教程入门篇

    内容简介: Python入门篇教程从最基础的计算机发展史.Python的来源与发展历史开始讲起: 依次讲解python变量与表达式.数据类型.运算符.流程控制语句等,末尾通过课堂练习.课后作业以及微型 ...

  7. JSON数据结构(A、快速入门篇)(Yanlz+Data+JsonArray+JsonObject+JsonValue+JsonMapper.ToJson+JsonMapper.ToObject+)

    <JSON数据结构> 版本 作者 参与者 完成日期 备注 Data_JSON_V01_1.0 严立钻 2018.08.24 ++++一个好用的JSON在线编辑:http://www.kjs ...

  8. 【滤波专题-第3篇】IIR无限冲激响应和FIR有限冲激响应数字滤波器有什么区别?

    该文章在之前编写并发布过,现在重新编辑一下并纳入到滤波专题中. 之前已经讲过FIR和IIR的概念: Mr.看海:[滤波专题-第1篇]数字滤波器15分钟入门!--这可能是最简单的FIR有限冲激响应滤波讲 ...

  9. 读书笔记:《谁说菜鸟不会数据分析-入门篇》第1-4章

    读书笔记:<谁说菜鸟不会数据分析-入门篇> 第一章:数据分析是神马 数据分析分类: 1.数据分析分类: 描述性数据分析:常见方法:对比分析法.平均分析法.交叉分析法 探索性数据分析–发现数 ...

  10. 产品读书《谁说菜鸟不会数据分析(入门篇)》

    PPT查看1  PPT查看2   思维导图下载   ppt下载 什么是数据分析?怎么样才是数据分析的思维?数据分析的流程有哪些?常用的数据方法又有哪些?工具呢?可以学习的网站有哪些?我觉得<谁说 ...

最新文章

  1. 常见的计算机视觉任务综述
  2. 数组专题——找重复数字 利用下标
  3. python 报错 cannot import name ‘byte_string‘ from ‘Crypto.Util.py3compat‘ 解决方法
  4. Fabric 架构和概念
  5. Destination Host Unreachable问题记录
  6. [INS-20802] Oracle Net Configuration Assistant failed
  7. Android 驱动(10)----设备树(二)linux内核顶层am335x-evm.dts
  8. 如何删除C++容器中的值
  9. Windows Phone7成为诺基亚核心目标
  10. linux中crontab的用法
  11. ZZULIOJ1049
  12. 利用python制作词云图
  13. IntelliJ IDEA 自定义注释作者名字
  14. (超详细) eclispe如何连接SQL Server2019(通过JDBC驱动包连接)
  15. 在AI里怎么把一行字拆成单个的字,并且可编辑
  16. 浅谈一下Program Files和Program Files(x86)
  17. 谷歌浏览器设置启动页被hao123劫持_win10系统打开chrome会被hao123劫持怎么办?解决方案...
  18. win11提示找不到gpedit.msc命令
  19. 利用Windows的IFELanguage接口,取得拼音笔划数其实很简单!
  20. 微信运营必备!专业的微信粉丝和社群管理工具!功能强大好用,而且免费!

热门文章

  1. excel的frequency函数的用法和实例
  2. 垃圾回收:垃圾数据如何自动回收
  3. matplotlib之绘制折线图、条形图、直方图
  4. 迅为i.MX8M Mimi 核心板硬件介绍
  5. 英语单词词性顺口溜_英语单词顺口溜
  6. typora编辑器运行变慢?
  7. 从工地转行网络安全工程师,工资翻了好几倍,我想和大家聊聊我的经历
  8. ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程
  9. 这焊接技术在班里排名第一没问题吧?
  10. 数据采集的方式有哪些