LeetCode 724. 寻找数组的中心下标

题目

给你一个整数数组 nums ,请计算数组的中心下标。数组中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。

例:
输入:nums = [1, 7, 3, 6, 5, 6]
输出:3
解释:
中心下标是 3 。
左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。

方法
  • numSum 表示数组 nums 所有数字的和
  • leftSum 表示包括中心下标对应的数字及其左边所有数字的和,rightSum 表示包括中心下标对应数字及其右边所有数字的和
    根据题目中心下标的定义,左侧所有数字相加的和等于右侧所有数字相加的和,那么两侧同时加上中心下标对应的数字,两个和仍相等
  • 从左到右进行循环,不断计算 leftSum 和 rightSum 的值,并判断二者是否相等,若相等,则返回此时的下标 i
class Solution(object):
    def pivotIndex(self, nums):
        numSum = sum(nums)
        leftSum, rightSum = 0, 0
        for i in range(len(nums)):
            leftSum += nums[i]
            rightSum = numSum - leftSum + nums[i]
            if leftSum == rightSum:
                return i
        return -1
参考

代码相关:https://programmercarl.com/0724.%E5%AF%BB%E6%89%BE%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E5%BF%83%E7%B4%A2%E5%BC%95.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容