303. Range Sum Query

来源:互联网 发布:如何选基金 知乎 编辑:程序博客网 时间:2024/05/16 16:55

题目描述:

Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.

Example:

Given nums = [-2, 0, 3, -5, 2, -1]sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3

Note:

  1. You may assume that the array does not change.
  2. There are many calls to sumRange function.
解题思路:

为了节省计算量。我们首先创建一个vector数组sums用来记录前i个元素的和,第i到第j个元素的和则可以由sums[j] - sums[i-1]来得到。

代码:

class NumArray {private:    vector<int> sums;public:    NumArray(vector<int> nums) {        int sum = 0;        for (int i = 0; i < nums.size(); i++) {            sum += nums[i];            sums.push_back(sum);        }    }        int sumRange(int i, int j) {        return sums[j] - sums[i-1];    }};/** * Your NumArray object will be instantiated and called as such: * NumArray obj = new NumArray(nums); * int param_1 = obj.sumRange(i,j); */


0 0
原创粉丝点击