描述
对于数列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;
}