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