帮我优化 这段代码 for(int i = 0;i < nums.length-1; i++){ sum = sum + nums[i]; nums[i] = sum; }
时间: 2023-05-21 08:07:02 浏览: 147
java代码-1. 两数之和 [简单] https://leetcode-cn.com/problems/two-sum
非常好的问题!这段代码可以使用前缀和算法进行优化,以O(1)时间复杂度获得任意区间的和。优化后的代码如下:
int[] prefixSum = new int[nums.length];
prefixSum[0] = nums[0];
for (int i = 1; i < nums.length; i++) {
prefixSum[i] = prefixSum[i-1] + nums[i];
}
这个prefixSum数组表示nums数组的前缀和。比如prefixSum[3]就是nums数组前四个元素的和。这种优化方法在需要频繁查询数组区间和的问题中非常有用。希望这能对你有所帮助!
阅读全文