题目:
这道题求动态和,最先考虑到的就是就是一个遍历累加的状态,仔细分析发现,其实新的数组只需要前面的和就好了,没必要多次遍历,那么这道题的思路就出来了
代码如下:
class Solution {
public static int[] runningSum(int[] nums) {
//定义长度
int length = nums.length;
//初始化返回数组
int [] newNum = new int[length];
int sum =0;
//循环遍历累加
for (int counter = 0; counter<length ;counter++){
sum += nums[counter];
newNum[counter]=sum;
}
return newNum;
};
}
leetcode执行结果:
这样肯定是有优化空间的,所以再仔细分析,其实新的数组也没有存在的必要,因为我们已经有了累加的和,新的数据只需要累加和加上新数据就可以了,所以经过优化,
代码如下:
class Solution {
public static int[] runningSum(int[] nums) {
//从第一位开始因为第0位是0+nums【0】,每一个新数据是累加和加上当前数据
for (int counter = 1; counter<nums.length ;counter++){
nums[counter]=nums[counter-1]+nums[counter];
}
return nums;
};
}
leetcode执行结果:
就会优化很多