领扣LintCode算法问题答案-1068. 寻找数组的中心索引
1068. 寻找数组的中心索引
描述
给定一个整数数组nums,编写一个返回此数组的“中心索引”的方法。
我们将中心索引定义为:中心索引左边的数字之和等于中心索引右边的数字之和。
如果不存在这样的中心索引,我们应该返回-1。 如果有多个中心索引,则应返回最左侧的那个。
- nums的长度范围为[0, 10000].
- nums[i] 中每个元素都是[-1000, 1000]范围内的整数.
样例 1:
输入:
nums = [1, 7, 3, 6, 5, 6]
输出: 3
解释:
索引3 (nums[3] = 6)左侧所有数之和等于右侧之和。
并且3是满足条件的第一个索引。
样例 2:
输入:
nums = [1, 2, 3]
输出: -1
解释:
并没有满足条件的中心索引。
题解
public class Solution {
/**
* @param nums: an array
* @return: the "pivot" index of this array
*/
public int pivotIndex(int[] nums) {
// Write your code here
if (nums.length < 3) {
return -1;
}
int index = nums.length - 1;
int leftSum = 0;
int rightSum = 0;
for (int i = 0; i < index; i++) {
leftSum += nums[i];
}
while (index > 0
&& leftSum != rightSum) {
leftSum -= nums[index - 1];
rightSum += nums[index];
index--;
}
return leftSum == rightSum ? index : -1;
}
}
鸣谢
非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。