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 两点(也就是 numsleft + numsleft + 1 + ... + numsright )

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];
    }
};
相关推荐
开开心心就好4 分钟前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
格物致胜工业数智技术7 分钟前
锂电纠偏测量那些坑,明治ETD-0612激光纠偏传感器怎么填?
人工智能·算法
垆边人似月.11 分钟前
带权区间调度,优先级可负
算法
重生之小比特12 分钟前
【算法拾光】双指针|三数之和 + 四数之和
算法
我爱工作&工作love我15 分钟前
P14359 [CSP-J 2025] 异或和
算法
茉莉玫瑰花茶16 分钟前
GO [ 数据格式 ]
服务器·网络·算法·golang
小poop17 分钟前
高级排序算法与性能对比——归并、非比较排序及总结
数据结构·算法·排序算法
aqiu11111118 分钟前
CodeTop按顺序刷题0003:LeetCode 206. 反转链表(迭代法图文详解与动态演示)
算法·leetcode·链表
果霸大叔1 小时前
AI网关第8篇:AI 代理与负载均衡--多模型实例如何调度?
人工智能·算法·自然语言处理·负载均衡·ai-native
用户84913717547161 小时前
Redis 跳表用了"随机"的魔法,实现了比平衡树更快的查找!
数据结构·redis