给定一个整数数组nums,编写一个能够返回“中心下标”的方法
中心下标是数组的一个下标,其左侧元素的和等于右侧所有元素的和
如果不存在,返回-1。如果有多个中心小标,则返回最靠近左边的那个
注意:中心下标可能出现在数组的两端。
上代码:
import java.util.Arrays;
/**
* 寻找数组的中心下标
* 双指针
*/
public class ArrayCenterIndex {
public static int pivotIndex(int[] nums){
int sum = Arrays.stream(nums).sum();//jdk8 新特性
int total = 0;
for (int i=0;i<nums.length;i++){
total+=nums[i];
if (total==sum){
return i;
}
sum -=nums[i];
}
return -1;
}
public static void main(String[] args) {
System.out.println(pivotIndex(new int[]{1,7,3,6,5,6})); // 3 因为1+7+3 = 5+6
}
}
结果:
3