leetcode 303. 区域和检索 - 数组不可变
给定一个整数数组 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 方法。
方法:动态规划
思路:动态规划,提前对nums进行预处理,计算出从0到nums每个元素位置的总和记录到sums,查询i 到 j范围内元素的总和时只需用sums[j + 1] - sums[i]即为答案。
运行数据:执行用时:10 ms,内存消耗:41.7 MB
复杂度分析:
- 时间复杂度:每次查询的时间复杂度为O(1),构造函数的预处理时间复杂度为O(n),n为nums的元素个数。
- 空间复杂度:O(n),n为nums的元素个数。
1 | // LeetCode指定类 |
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!