您的位置:首页 > 产品设计 > UI/UE

[leetcode-303]Range Sum Query - Immutable(java)

2015-11-10 16:03 387 查看
问题描述:

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.

分析:这道题比较简单,就是在预处理阶段,在每个点上存储从0到当前点的值,这样当返回某范围时,就直接nums[j]-nums[i]即可,当然了,要注意是否越界。

另外好像不能直接去修改nums的值,只能再另外开辟一块空间。

代码如下:

public class NumArray {
int[] vals;
public NumArray(int[] nums) {
vals = new int[nums.length];
if(vals.length == 0)
return;

vals[0] = nums[0];
for(int i = 1;i<nums.length;i++){
vals[i] = vals[i-1] + nums[i];
}
}

public int sumRange(int i, int j) {
if(vals.length == 0)
return 0;

if(j > vals.length-1)a
j = vals.length-1;

if(i <= 0)
return vals[j];
return vals[j]-vals[i-1];
}
}

// Your NumArray object will be instantiated and called as such:
// NumArray numArray = new NumArray(nums);
// numArray.sumRange(0, 1);
// numArray.sumRange(1, 2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: