努橙刷题编

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

https://leetcode.com/problems/range-sum-query-immutable/

用一个 sum 数组,sum[i] -- nums 中选出前 i 个元素,求和所得到的值。

这样就有:

nums = [-2, 0, 3, -5, 2, -1]
sum = [0, -2, -2, 1, -4, -2, -3]
sumRange(0, 2) -> sum[2 + 1] - sum[0] -> 1 sumRange(2, 5) -> sum[5 + 1] - sum[2] -> -1 sumRange(0, 5) -> sum[5 + 1] - sum[0] -> -3
public class NumArray {
    int[] sum;

    public NumArray(int[] nums) {
        sum = new int[nums.length + 1];
        for (int i = 0; i < nums.length; i++) {
            sum[i + 1] = sum[i] + nums[i];
        }
    }
    
    public int sumRange(int i, int j) {
        return sum[j + 1] - sum[i];
    }
}

/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray obj = new NumArray(nums);
 * int param_1 = obj.sumRange(i,j);
 */
posted on 2017-05-16 11:13  努橙  阅读(101)  评论(0编辑  收藏  举报