题目:

给定一个整数数组  nums,处理以下类型的多个查询:

计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right
实现 NumArray 类:

NumArray(int[] nums) 使用数组 nums 初始化对象
int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 nums[left] + nums[left + 1] + ... + nums[right] )

示例 1:

输入:
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出:
[null, 1, -1, -3]

解释:
NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1)) 
numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))

提示:

1 <= nums.length <= 104
-105 <= nums[i] <= 105
0 <= i <= j < nums.length
最多调用 104 次 sumRange 方法

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

结果:

解题思路:

这题就是用一个NumArray数组记录当前的数据value和其前缀和sum。也就是sum是0~i的value之和。

前缀和:我理解的就是从0到 i 为止的数据之和。

我们求和的left是要被算进去的,因此不能用sum [ right ] - sum [ left ],而是要sum [ right ] - sum [ left - 1 ].因此需要考虑 - 1之后会不会越界。

代码:

typedef struct {int value;int sum;
} NumArray;NumArray* numArrayCreate(int* nums, int numsSize) {NumArray *obj = (NumArray *)malloc(sizeof(NumArray) * numsSize);obj[0].value = nums[0];obj[0].sum = nums[0];for (int i = 1; i < numsSize; i++) {obj[i].value = nums[i];obj[i].sum = obj[i - 1].sum + obj[i].value;}return obj;
}int numArraySumRange(NumArray* obj, int left, int right) {if (left == 0) {return obj[right].sum;}return obj[right].sum - obj[left - 1].sum;
}void numArrayFree(NumArray* obj) {free(obj);
}/*** Your NumArray struct will be instantiated and called as such:* NumArray* obj = numArrayCreate(nums, numsSize);* int param_1 = numArraySumRange(obj, left, right);* numArrayFree(obj);
*/

C练题笔记之: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.区域和检索 - 数组不可变

    Time: 20190904 Type: Easy 题目描述 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点. 示例: 给定 nums ...

  5. C练题笔记之:Leetcode-307. 区域和检索 - 数组可修改

    题目: 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的n ...

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

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

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

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

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

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

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

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

最新文章

  1. python 离线下载和安装第三方库 .whl wheel 文件
  2. AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
  3. Linux下查看CPU信息、机器型号等硬件信息
  4. java的k-means算法_k-means聚类算法的java实现描述!
  5. mysql 索引表的应用_MySQL查询优化之索引的应用详解
  6. 晚上无聊象征性收取了网友100元辛苦费,实现支持多语言功能的XML语言包版的C#的ASP.NET多语言支持例子程序...
  7. Metasequoia 4 for Mac(3D建模)
  8. 论文阅读笔记(一)——DESCENDING THROUGH A CROWDED VALLEY—BENCHMARKING DEEP LEARNING OPTIMIZERS
  9. html 字体思源_思源字体打包下载
  10. TeleportUltra_1.65_PortableSoft离线浏览利器-扒网页神器
  11. 八爪鱼 八爪鱼采集器四大采集模式
  12. 电子科技大学计算机专业考什么,2015年电子科技大学081203计算机应用技术考研专业目录及考试科目...
  13. vmd安装包_VMD 1.9.1 安装和使用(Centos6.3)
  14. 斯皮尔曼等级相关系数 matlab,斯皮尔曼等级相关(matlab专题)
  15. 【ARM裸机s5pv210 】芯片初始化
  16. codereview(codereview什么意思)
  17. (一)数据后端之逻辑综合
  18. 中南大学转专业计算机名单,中南大学2010级优秀本科生转专业名单
  19. iOS 定位失败 非洲 经纬度为0,0
  20. wifi动不动就断开_手机信号满格,但是WIFI经常掉线!我来教你怎么办!

热门文章

  1. iPhone手机解锁
  2. Oracle安装的一些问题收集[转]
  3. 无法打开模块文件“C:\Users\sq\AppData\Local\Temp\.NETFramework,Version=v4.5,AssemblyAttributes.vb”:系统找不到指定的文件
  4. 字节跳动面试凉经(挂三面)
  5. 编译器会为const引用创建临时变量
  6. 添加超声波障碍图层并用rbx1仿真
  7. jav 中 this和super
  8. 美团王兴再调整组织架构,大众点评高管淡出核心部门
  9. 【第54篇】一种用于视觉识别的快速知识蒸馏框架
  10. 【Java并发】-- ConcurrentHashMap如何实现高效地线程安全(jdk1.8)