Time: 20190904
Type: Easy

题目描述

给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。

示例:

给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3

说明:

你可以假设数组不可变。
会多次调用 sumRange 方法。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/range-sum-query-immutable
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

使用部分和,将求和变成O(1)操作。
注意部分和的写法,将第一位留作未加元素时的值。

presum[0] = 0
presum[1] = nums[0]
presum[i] = presum[i-1] + nums[i-1] # 特别注意这里是nums[i-1]# [i, j]包含边界
presum[j + 1] - presum[i]

代码

class NumArray:def __init__(self, nums: List[int]):self.nums = numsif len(nums) > 0:# 求出部分和self.presum = [0 for i in range(len(nums) + 1)]self.presum[0] = 0self.presum[1] = nums[0]for i in range(2, len(nums) + 1):self.presum[i] = self.presum[i-1] + nums[i - 1]print(self.presum)def sumRange(self, i: int, j: int) -> int:if len(self.nums) == 0:return 0return self.presum[j + 1] - self.presum[i]# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)

END.

Leetcode 303.区域和检索 - 数组不可变相关推荐

  1. leetcode - 303.区域和检索-数组不可变(动态规划)

    303.区域和检索-数组不可变 ------------------------------------------ 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素 ...

  2. leetcode 303. 区域和检索 - 数组不可变(Java版)

    题目 303. 区域和检索 - 数组不可变 题解 经典的累加和问题. 定义一个数组 sum,存放数组从 0 到 sum 的累加和. 欲求某区间的累加和,只需将对应位置 sum 相减即可. 时间复杂度O ...

  3. LeetCode 303. 区域和检索 - 数组不可变(前缀和)

    1. 题目 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点. 示例: 给定 nums = [-2, 0, 3, -5, 2, -1],求 ...

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

    给定一个整数数组  nums,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点. 示例: 给定 nums = [-2, 0, 3, -5, 2, -1],求和函数 ...

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

    给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i.j 两点. 实现 NumArray 类: NumArray(int[] nums) 使用数组 nums ...

  6. LeetCode 303. 区域和检索 - 数组不可变(动态规划)

    题目描述 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点. 示例: 给定 nums = [-2, 0, 3, -5, 2, -1],求和 ...

  7. 2022-3-3 Leetcode 303.区域和检索——数组不可变

    第一反应是用前缀和 class NumArray {public:NumArray(vector<int>& nums) {if(!nums.empty()){res.push_b ...

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

    303. 区域和检索 - 数组不可变 Ideas 啥也没有,直接求和. Code Python from typing import Listclass NumArray:def __init__(s ...

  9. leetcode 303. Range Sum Query - Immutable | 303. 区域和检索 - 数组不可变(一维前缀和问题)

    题目 https://leetcode.com/problems/range-sum-query-immutable/ 题解 标准的前缀和问题,简单题,不多说,直接上代码 import java.ut ...

最新文章

  1. TensorFlow实现多层感知机MINIST分类
  2. CUDA之单thread单block多thread单block多thread多block
  3. 2019年移动开发,我的求变之路
  4. 概率统计笔记: 卡方分布(介绍)
  5. 聊一聊ThreadLocal
  6. ASP.Net Telerik RadGrid动态生成表头
  7. Android之AIDL使用详解
  8. 中科院自动化所研究员课题组PPT《如何撰写毕业论文?》
  9. 智能会议系统(10)---WebRtc在H5视频聊天
  10. thinkphp3.2.3 找不到自定义模型_Orion HTC VIVE高性价比动作捕捉,虚拟直播 支持UE4.25 导入自定义模型...
  11. LUT查表法乘法器所犯下错误。。。。
  12. python基础 函数
  13. keras实现Segnet、FCN、U-Net系列分割网络
  14. Windows Driver Kits(WDK)中devcon.exe单独安装方法
  15. Modbus RTU 指令
  16. 【Spring】概述及IOC理论推导
  17. 一元、二元函数图像绘制
  18. ECMAScript - 字符串的部分使用方法
  19. 第 2 课:KNX智能控制系统的接口 BCU 模块
  20. 计算机工程制图箭头怎么画,cad中箭头画法

热门文章

  1. Pytorch---之scatter_ 理解轴的含义
  2. 相机标定(二)—— 投影变换相关基础概述
  3. back propagation反向传播(浅层神经网络分析示例)
  4. java开发搭建环境搭建_Java开发环境搭建
  5. tkinter的可视化拖拽工具_微信小游戏内测可视化工具!“人人都是小程序开发者”的时代到了...
  6. vba有下拉框的模糊查找_巧用数据验证制作模糊匹配的下拉列表
  7. 正态分布某一点的概率怎么算_笔记|复习金融计量中概率随笔1(样本推整体)
  8. Telnet服务器的系统要求,Telnet 服务器概述
  9. arm中断保护和恢复_ARM中断处理过程
  10. 前端切换视图_前端开发的10个软件工具,用过3个就是大神!