在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