区域和检索 - 数组不可变(C++)

简介: 区域和检索 - 数组不可变(C++)

区域和检索 - 数组不可变

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

我的思路:考查点也就是前缀和,只是需要注意的是一般的前缀和可能不包含右边界,这里需要right+1才会包含。

我的代码:

class NumArray {
public:
    vector<int> res;
    NumArray(vector<int>& nums) {
        res.resize(nums.size() + 1);
        // 前缀和的另一种写法
        for (int i = 0; i < nums.size(); ++ i)
        {
            res [i + 1] = res[i] + nums[i];
        }
    }
    int sumRange(int left, int right) {
        return res[right + 1] - res[left];
    }
};
/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray* obj = new NumArray(nums);
 * int param_1 = obj->sumRange(left,right);
 */


目录
打赏
0
0
0
0
48
分享
相关文章
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
133 4
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
63 5
|
11月前
|
C++指针数组
C++指针数组
74 1
|
7月前
|
C++
C++(十一)对象数组
本文介绍了C++中对象数组的使用方法及其注意事项。通过示例展示了如何定义和初始化对象数组,并解释了栈对象数组与堆对象数组在初始化时的区别。重点强调了构造器设计时应考虑无参构造器的重要性,以及在需要进一步初始化的情况下采用二段式初始化策略的应用场景。
|
8月前
|
c++学习笔记04 数组
这篇文章是C++学习笔记4,主题是数组。
65 4
|
9月前
|
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
53 6
|
9月前
|
开发与运维数组问题之声明一个数组如何解决
开发与运维数组问题之声明一个数组如何解决
57 6
|
9月前
|
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
92 5
|
8月前
|
C++数组、vector求最大值最小值及其下标
C++数组、vector求最大值最小值及其下标
267 0

热门文章

最新文章