华为od机试 - 计算数组中心位置 java
时间: 2023-05-08 11:00:34 浏览: 154
题目描述:
给定一个整数数组,找到该数组的中心索引。数组中心索引的左侧所有元素的和等于右侧所有元素的和。如果不存在这样的中心索引,则返回-1。如果有多个中心索引,则应该返回最左侧的那一个。
思路分析:
首先计算出数组的总和,然后依次循环数组,将当前元素之前的所有元素的和累加起来,再将当前元素之后所有元素的和累加起来,如此循环,当此时前面元素的和等于总和减去当前元素和前面元素的和时,即可得到中心索引。
Java代码实现:
```
public int pivotIndex(int[] nums) {
// 数组的总和
int sum = 0;
// 当前元素之前所有元素的和
int preSum = 0;
for (int num : nums) {
sum += num;
}
for (int i = 0; i < nums.length; i++) {
// 如果当前元素之前所有元素的和等于总和减去当前元素和前面元素的和,就找到了中心索引
if (preSum == sum - preSum - nums[i]) {
return i;
}
preSum += nums[i];
}
// 不存在中心索引
return -1;
}
```
测试数据:
输入:[1, 7, 3, 6, 5, 6]
输出:3
解释:中心索引是3,左侧所有元素的和 = 1 + 7 + 3 = 11,右侧所有元素的和 = 5 + 6 = 11。
输入:[1, 2, 3]
输出:-1
解释:该数组不存在中心索引。左侧所有元素的和 != 右侧所有元素的和。
阅读全文