
此题我们不应局限于前缀和的模板,因为该中心下标把数组分为两个部分且每个部分都要求和,我们就一个再创建一个"后缀和"
定义两个数组f,g。fi表示0,i-1所有元素的和 fi=fi-1+numsi-1;gi表示i+1,n-1的和
gi=gi+1+numsi+1;因为依靠关系,f要从左到右,g要从右到左。
注意题干中的边界条件,0和n-1位置出的左、右是0,因此不要越界。
cpp
int Solution(vector<int> nums)
{
int n=nums.size();
vector<int> f(n),g(n);
//0,n-1的位置已经初始化为0
for(int i=1;i<n;i++)
f[i]=f[i-1]+nums[i-1];
for(int i=n-2;i>=0;i--)
g[i]=g[i+1]+nums[i+1];
for(int i=0;i<n;i++)
if(f[i]==g[i])
return i;
return -1;
}