2021/1/28 寻找数组的中心索引 收获:一颗星

2021/1/28 寻找数组的中心索引

题干:

给你一个整数数组 nums,请编写一个能够返回数组 “中心索引” 的方法。

数组 中心索引 是数组的一个索引,其左侧所有元素相加的和等于右侧所有元素相加的和。

如果数组不存在中心索引,返回 -1 。如果数组有多个中心索引,应该返回最靠近左边的那一个。

注意:中心索引可能出现在数组的两端。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/find-pivot-index

链接:https://leetcode-cn.com/problems/find-pivot-index/solution/xun-zhao-shu-zu-de-zhong-xin-suo-yin-by-gzjle/

我的解题代码:

class Solution {
        public int pivotIndex(int[] nums) {
            int total = 0;
            int sum = 0;
            for(int i=0;i<nums.length;i++){
                total+=nums[i];
            }
            for(int i=0;i<nums.length;i++) {
                if(2*sum+nums[i]==total) {
                    return i;
                }else{
                    sum+=nums[i];
                }
            }
           
            return -1;
        }
    }

官方代码:

class Solution {
    public int pivotIndex(int[] nums) {
        int total = Arrays.stream(nums).sum();
        int sum = 0;
        for (int i = 0; i < nums.length; ++i) {
            if (2 * sum + nums[i] == total) {
                return i;
            }
            sum += nums[i];
        }
        return -1;
    }
}

 不一样的原因:

官方使用了Arrays.stream(nums).sum()的方式来计算total,而不是用for循环

收获:

当涉及到多个变量时(例如左边的和、右边的和),我们可以看看变量之间是否有联系,本题就是左右两边之和再加上分割的那个数,即为total(感觉类似数学遇到多个变量时的解决方式,那就是统一变量)

原文地址:https://www.cnblogs.com/mmimo/p/14342393.html