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
广告