Range Sum Query - Immutable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) -> -3Note:
  1. You may assume that the array does not change.
  2. There are many calls to sumRange function.

想了想怎么可能有这么简单的题

那么重点在这句:There are many calls to sumRange function.

因此要考虑效率,那么自然考虑动态规划

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

/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray obj = new NumArray(nums);
 * int param_1 = obj.sumRange(i,j);
 */

 

以上是关于Range Sum Query - Immutable的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 303. Range Sum Query - Immutable

Range Sum Query - Mutable

Range Sum Query - Immutable

LeetCode -- Range Sum Query

Range Sum Query 2D - Immutable

307. Range Sum Query - Mutable