力扣_303_数组不可变(简单)
给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
实现 NumArray 类:
NumArray(int[] nums) 使用数组 nums 初始化对象
int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))
说实话,看了几遍题,也没看懂啥意思,一方面怀疑自己是不是智商有问题,一方面又怀疑这题目是不是汉语....
后来背着自己的良心看了答案,答案真香....
这个题目的意思是在于多次调用sumRange方法,所以在sumRange方法中循坏得到结果是不可取的...
class NumArray { int[] sums; public NumArray(int[] nums) { int n = nums.length; sums = new int[n + 1]; for (int i = 0; i < n; i++) { sums[i + 1] = sums[i] + nums[i]; } } public int sumRange(int i, int j) { return sums[j + 1] - sums[i]; } }
注:sums[nums.length + 1 ]数组的长度设置成这样,是为了防止调用sumRange(0,0)这种边界情况。

浙公网安备 33010602011771号