classNumArray{privateint[] nums;publicNumArray(int[]nums){this.nums= nums;}publicintsumRange(intleft,intright){int res =0;for(int i = left; i <= right; i++){ res += nums[i];}return res;}}
这样,可以达到效果,但是效率很差,因为 sumRange 方法会被频繁调用,而它的时间复杂度是 O(N),其中 N 代表 nums 数组的长度。
这道题的最优解法是使用前缀和技巧,将 sumRange 函数的时间复杂度降为 O(1),说白了就是不要在 sumRange 里面用 for 循环,咋整?