要求给定一个数组,获取数组的一个分界点的下标,使得该分界点的两侧子数组的和相等。如果存在多个分界点,只返回第一个分界点的下标,如果没有则返回-1。 要求:时间复杂度不得超过O(n)。
测试用例:
输入:[-20, 30, 10, 40, 20]
返回:3
#include<iostream>
using namespace std;
int hello(int a[],int n){
int sun=0;
int leftsum=0;
int rightsum=0;
for(int i=0;i<n;i++)
{
sun+=a[i];
}
for(int i=1;i<n-1;i++){
leftsum+=a[i-1];
rightsum=sun-leftsum-a[i];
if(leftsum==rightsum)
return i;
}
return -1;
}
int main()
{
int a[5]={-20,30,10,40,20};
int b=hello(a,5);
return 0;
}