难度简单245收藏分享切换为英文接收动态反馈
给定一个整数数组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]))
提示:
0 <= nums.length <= 104
-105<= nums[i] <= 105
0 <= i <= j < nums.length
最多调用 10^4 次 sumRange 方法
解决方案:
简单点暴力点?就是一个类
发现题目有提示:最多调用 10^4 次 sumRange 方法
优化1:用一个数组来维护前缀和
Sum[j] = mNums[0] + mNums[1] + mNums[2] + mNums[3] + …… + mNums[j]
那么
sumRange(i , j ) = sum[j] - sum[i] + mNums[i];