image.png
    数组中某一个下标,左右两边的元素之和相等,该下标为中心索引。
    思路一:
    1、先统计出整个数组的和,然后从第一个元素开始叠加
    2、叠加递增当前元素,总和递减当前元素,直到两个值相等
    思路二:
    1、先统计出整个数组的和,然后从第一个元素开始叠加
    2、叠加的值*2 等于 (数组和-当前元素的值),则当前元素的下标就是中心索引

    1. public class ArrayCenterIndex {
    2. public static void main(String[] args) {
    3. System.out.println(pivotIndex2(new int[] {1,0,0,1}));
    4. }
    5. private static int pivotIndex1(int[] ints) {
    6. int sum = Arrays.stream(ints).sum();
    7. int total = 0;
    8. for (int i = 0; i < ints.length; i++) {
    9. total += ints[i];
    10. if (total == sum) {
    11. return i;
    12. }
    13. sum = sum - ints[i];
    14. }
    15. return -1;
    16. }
    17. private static int pivotIndex2(int[] ints) {
    18. int sum = Arrays.stream(ints).sum();
    19. int total = 0;
    20. for (int i = 0; i < ints.length; i++) {
    21. if (total*2 == sum - ints[i]) {
    22. return i;
    23. }
    24. total += ints[i];
    25. }
    26. return -1;
    27. }
    28. }