Range Sum Query - Immutable (303)

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]code

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.element

思路: 求區間的和就想到前n項和,即sumRange(i, j) = sum[j + 1] - sum[i]. 爲了方便, 前n項和數組通常比原數組開闢的多一個, 由於前0項和爲0. io

時間複雜度: O(n)
空間複雜度: O(n)table

public class NumArray {
    private int[] sum;
    public NumArray(int[] nums) {
        sum = new int[nums.length + 1];
        sum[0] = 0;
        for (int i = 1; i <= nums.length; i++) {
            sum[i] = sum[i - 1] + nums[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);
相關文章
相關標籤/搜索