如题
眼熟啊,原来做过304了,对应的3种方法,先直接求
static int[] nus;
public static void NumArray(int[] nums) {
nus = nums;
}
public int sumRange(int i, int j) {
int sum = 0;
for (int m = i; m <= j; m++) {
sum += nus[m];
}
return sum;
}
结果
缓存index前序和
public static void NumArray1(int[] nums) {
int []ns = new int[nums.length];
for(int i=0;i<nums.length;i++) {
int sum=0;
for(int m=0;m<=i;m++) {
sum+=nums[m];
}
ns[i]=sum;
}
nus = ns;
}
public int sumRange1(int i, int j) {
return i==0?nus[j]:nus[j]-nus[i-1];
}
结果变好
优化动态规划求前序和
public static void NumArray2(int[] nums) {
int []ns = new int[nums.length];
if(nums==null||nums.length==0) {
return ;
}
ns[0]=nums[0];
for(int i=1;i<nums.length;i++) {
ns[i]=ns[i-1]+nums[i];
}
}
结果
还是一样,提交leetcode去除static