303. Range Sum Query

/*
 * 303. Range Sum Query - Immutable 
 * 2016-7-3 by Mingyang
 * 这个题目很简单的一开始看来,直接累加就好,但是这里说的是sumRange会被调用很多次
 * 因此需要把结果先存起来,调用时就可以直接返回了。最开始考虑的是用dp[i][j]来直接存储i到j之间元素的和,
 * 但是内存超出限制。于是考虑用dp[i]来存储0到i之间元素的和,0到j的和减去0到i-1的和即为所求。
 */
class NumArray {
    private int[] dp;
    public NumArray(int[] nums) {
        dp = new int[nums.length];
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum += nums[i];
            dp[i] = sum;
        }
    }
    public int sumRange(int i, int j) {
        return i == 0 ? dp[j] : dp[j] - dp[i - 1];
    }
}
原文地址:https://www.cnblogs.com/zmyvszk/p/5639396.html