枢纽元素求解c++问题

描述

对于数列a1,…,an中的某个元素x,如果x左侧的元素之和等于x右侧的元素之和,则称x为这一数列的枢纽元素。如果数列存在多个枢纽元素,只需求出最左侧的枢纽元素;如果数列不存在枢纽元素,则输出-1。

输入描述:

第1行一个整数n代表元素个数,第2行为数列中的n个元素。

输出描述:

一行一个整数,表示第一个枢纽元素在数列中的序号,不存在则输出-1。

输入样例:

6
1 7 -2 6 0 6
输出样例:

4
数据范围

1 ≤ n ≤ 10^5
-10^9 ≤ ai ≤ 10^9

int func(vector nums) {
int n = nums.size();
vector sums(n);
sums[0] = nums[0];
for (int i = 1; i < n; i++) {
sums[i] = sums[i - 1] + nums[i];
}
for (int i = 1; i < n-1; i++) {
if (sums[n - 1] - sums[i] == sums[i - 1])
return i+1;
}
return -1;
}
int main()
{
int n;
cin >> n;
vector nums(n);
for (int i = 0; i < n; i++)
cin >> nums[i];
int ans = func(nums);
cout << ans << endl;
}


int func(vector<int> nums) {
    int n = nums.size();
    vector<int> sums(n);
    sums[0] = nums[0];
    for (int i = 1; i < n; i++) {
        sums[i] = sums[i - 1] + nums[i];
    }
    for (int i = 1; i < n-1; i++) {
        if (sums[n - 1] - sums[i] == sums[i - 1])
            return i+1;
    }
    return -1;
}
int main()
{
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; i++)
         cin >> nums[i];
    int ans = func(nums);
    cout << ans << endl;
}