leetcode303. 区域和检索 - 数组不可变 前缀和

  • https://leetcode.cn/problems/range-sum-query-immutable/

  • 给定一个整数数组 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] )

c 复制代码
示例 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))
  • 前缀和解法
c 复制代码
class NumArray {
public:
    vector<int> sums;

    NumArray(vector<int>& nums) {
        int n = nums.size();
        sums.resize(n + 1);
        for (int i = 0; i < n; i++) {
            sums[i + 1] = sums[i] + nums[i];
        }
    }

    int sumRange(int i, int j) {
        return sums[j + 1] - sums[i];
    }
};
相关推荐
杰克尼7 分钟前
120. 三角形最小路径和
算法
树在风中摇曳13 分钟前
C语言动态内存管理:从基础到进阶的完整解析
c语言·开发语言·算法
mjhcsp26 分钟前
C++ 高精度计算:突破数据类型限制的实现与应用
开发语言·c++·算法·高精度
大袁同学37 分钟前
【二叉搜索树】:程序的“决策树”,排序数据的基石
数据结构·c++·算法·决策树·stl
蓝色汪洋1 小时前
xtu oj环--唉
算法
Algo-hx1 小时前
数据结构入门 (十):“左小右大”的秩序 —— 深入二叉搜索树
数据结构·算法
努力学算法的蒟蒻2 小时前
day11(11.11)——leetcode面试经典150
算法·leetcode·面试
im_AMBER2 小时前
Leetcode 51
笔记·学习·算法·leetcode·深度优先
做怪小疯子2 小时前
LeetCode 热题 100——哈希——字母异位词分组
算法·leetcode·哈希算法
Einsail2 小时前
贪心算法,优先队列(大小根堆使用)
算法·贪心算法