前缀和原公式:rtSum[i] = sum(nums[0]...nums[i]) ;
OK,我们先用正常思路去写这道题:
非常的简单,但是,如果输入的值到达10^6以上,将会出现很多次不必要的重复运算,大大增加了时间复杂度,有什么办法可以解决这个问题呢?
没错,如果我们一开始,就把数列中所有的数(n)的前缀和(也就是从0+1+2+......+n)都算出来,后续在每一次查找【L,R】的和就可以用R的前缀和 - L的前缀和。就可以算出【L,R】中所有数的和!
想法非常好,接下来,我们来实现它的基本操作。
代码+注释:
这便是前缀和的基本实现方式
接下来,返回这道题:
代码+注释:
答案如下:
每日金句:
不飞则已,一飞冲天;不鸣则已,一鸣惊人。——《韩非子》
任何成功,都是厚积薄发,多年苦修换来的,不怕走得慢,只怕不开始。
有兴趣的可以加我,一起做做题,我们一起进步!