知识点
前缀和后缀和,模拟
思路
设数组长度为n
分别维护从左往右的前缀和l[i]=sum(nums[0i])以及从右往左的后缀和l[i]=sum(nums[in-1]),再从左往右遍历一次数组,若出现l[i-1]=r[i+1](等效于l[i]==r[i])则直接返回i
否则返回-1
代码c++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int pivotIndex(vector<int>& nums) {
// write code here
int ans=-1;
int n=nums.size();
int l[10005],r[10005];
l[0]=nums[0];r[n-1]=nums[n-1];
for(int i=1;i<n;i++)
{
l[i]=l[i-1]+nums[i];
}
for(int i=n-2;i>=0;i--)
{
r[i]=r[i+1]+nums[i];
}
for(int i=0;i<n;i++)
{ cout<<l[i]<<" "<<r[i]<<endl;
if(l[i-1]==r[i+1])return i;
}
return ans;
}
};