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 方法。

思路:定义数组。

class NumArray {

public:

    vector arr;

    NumArray(vector& nums) {

        arr = nums;

    }


    int sumRange(int i, int j) {

        int sum = 0;

        for(int m = i;m <= j;m++)

        {

            sum += arr[m];

        }

        return sum;

    }

};

将每个每次的和记入vector中,直接v[j+1]-v[i];

class NumArray {

public:

    vector arr;

    NumArray(vector& nums) {

        int sum = 0;

        arr.push_back(0);

        for(int i = 0;i < nums.size();i++)

        {

            sum += nums[i];

            arr.push_back(sum);

        }

    }


    int sumRange(int i, int j) {


        return arr[j+1]-arr[i];

    }

};

你可能感兴趣的:(303)