Python程序:查找左右元素和相等的索引


假设我们有一个名为nums的项目列表,我们必须找到最小的索引i,使得位于i左侧的数字之和等于位于i右侧的数字之和。如果找不到任何这样的解,则返回-1。

因此,如果输入类似于nums = [8,2,3,6,5,2,5,9,1,2],则输出将为4,因为索引4左侧元素的和[8,2,3,6] = 19,而右侧元素的和[2,5,9,1,2] 也为19。

为了解决这个问题,我们将遵循以下步骤:

  • r := nums中所有元素的总和

  • l := 0

  • 对于nums中的每个索引i和值x,执行:

    • r := r - x

    • 如果r等于l,则

      • 返回i

    • l := l + x

  • 返回-1

示例

让我们看下面的实现来更好地理解

def solve(nums):
   r = sum(nums)
   l = 0
   for i,x in enumerate(nums):
      r -= x
      if r == l:
         return i
      l += x
   return -1

nums = [8,2,3,6,5,2,5,9,1,2]
print(solve(nums))

输入

[8,2,3,6,5,2,5,9,1,2]

输出

4

更新于: 2021年10月11日

574 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告