跳至主要內容

剑指 Offer II 012. 左右两边子数组的和相等

ITCharge小于 1 分钟

剑指 Offer II 012. 左右两边子数组的和相等open in new window

  • 标签:数组、前缀和
  • 难度:简单

题目链接

题目大意

给定一个数组 nums

要求:找到「左侧元素和」与「右侧元素和相等」的位置,若找不到,则返回 -1

解题思路

两次遍历,第一次遍历先求出数组全部元素和。第二次遍历找到左侧元素和恰好为全部元素和一半的位置。

代码

class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        sum = 0
        for i in range(len(nums)):
            sum += nums[i]
        curr_sum = 0
        for i in range(len(nums)):
            if curr_sum * 2 + nums[i] == sum:
                return i
            curr_sum += nums[i]
        return -1