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];
    }
};
相关推荐
青山木3 分钟前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕28 分钟前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
北域码匠1 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
手写码匠2 小时前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe12 小时前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
Matrix_113 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue3 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist
不好听6134 小时前
深入理解链表:线性数据结构的另一面
javascript·数据结构
x138702859574 小时前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
海兰4 小时前
【实用程序】电商销售分析仪表盘 — 从零搭建一个AI参与的全栈数据洞察系统
人工智能·学习·算法