303. Range Sum Query - Immutable

来源:互联网 发布:自响应留言板php 编辑:程序博客网 时间:2024/05/22 15:31

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.
题意:快速的返回指定数组下标(i, j)之间的数的和。

思路:f(i)表示i之前所有数字的和,则i--j之间的和为f(j)-f(i-1)。

class NumArray {public:NumArray(vector<int> &nums) {if (nums.empty())return;mysum.resize(nums.size(), nums[0]);for (int i = 1; i < nums.size(); i++){mysum[i] = mysum[i - 1] + nums[i];}}int sumRange(int i, int j) {int a;if (i <= 0)a = 0;else{a = mysum[i - 1];}return mysum[j] - a;}private:vector<int> mysum;};// Your NumArray object will be instantiated and called as such:// NumArray numArray(nums);// numArray.sumRange(0, 1);// numArray.sumRange(1, 2);






0 0
原创粉丝点击