LeetCode|Range Sum Query - Immutable

来源:互联网 发布:笛子软件 编辑:程序博客网 时间:2024/06/05 07:26

Range Sum Query - Immutable

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.

思路:动态规划,预先计算出每一个[0, i], i∈(0, size-1)的和

class NumArray {public:    NumArray(vector<int> &nums) {        if(nums.size() == 0) return;        v.clear();        v.push_back(nums[0]); // calc the sum of [0, i]        for(int i = 1; i < nums.size(); i++){            v.push_back(v[i-1] + nums[i]);        }    }    int sumRange(int i, int j) {        if(i == 0) return v[j];        return v[j] - v[i-1];    }private:vector<long long> v;};// Your NumArray object will be instantiated and called as such:// NumArray numArray(nums);// numArray.sumRange(0, 1);// numArray.sumRange(1, 2);
0 0
原创粉丝点击