https://leetcode.com/problems/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) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -> -3
Note:
- You may assume that the array does not change.
- There are many calls to sumRange function.
public class NumArray
{
int[] sum;
public NumArray(int[] nums)
{
int n = nums.Length;
sum = new int[n + 1];
for (int i = 1; i < n+1; i++)
sum[i] = nums[i - 1] + sum[i - 1];
}
public int SumRange(int i, int j)
{
return sum[j + 1] - sum[i];
}
}
// Your NumArray object will be instantiated and called as such:
// NumArray numArray = new NumArray(nums);
// numArray.SumRange(0, 1);
// numArray.SumRange(1, 2);
网上还有一种使用线段树的做法
参考