gpt4 book ai didi

python - Python 2.7 中的平衡索引

转载 作者:行者123 更新时间:2023-11-28 22:26:55 24 4
gpt4 key购买 nike

我在 Codility 中获得了一项演示任务,但我在试图弄清楚自己做错了什么时遇到了一些麻烦。任务:

在 Python 2.7 环境中工作

给出了一个由 N 个整数组成的零索引数组 A。该数组的平衡索引是任意整数 P,满足 0 ≤ P < N 且较低索引元素的总和等于较高索引元素的总和,即

A[0] + A[1] + ... + A[P−1] = A[P+1] + ... + A[N−2] + A[N−1].

假定零元素之和等于 0。如果 P = 0 或 P = N−1,则可能发生这种情况。

例如,考虑以下由 N = 8 个元素组成的数组 A:

A[0] = -1
A[1] = 3
A[2] = -4
A[3] = 5
A[4] = 1
A[5] = -6
A[6] = 2
A[7] = 1

P = 1 是这个数组的平衡索引,因为:

A[0] = −1 = A[2] + A[3] + A[4] + A[5] + A[6] + A[7]

P = 3 是这个数组的平衡索引,因为:

A[0] + A[1] + A[2] = −2 = A[4] + A[5] + A[6] + A[7]

P = 7 也是一个均衡指数,因为:

A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0

并且没有索引大于 7 的元素。

P = 8 不是均衡指数,因为它不满足条件 0 ≤ P < N。

写一个函数:

定义解决方案(A)

给定一个由 N 个整数组成的零索引数组 A,返回它的任何平衡索引。如果不存在均衡指标,该函数应返回-1。

作为回应,我写了以下内容:

def solution(A):
if len(A) == 0: #If we're working with an empty list, the method should give us an empty list message and terminate there
return "Empty list, no integers to work with"
else:
equi = []
x = 0
length = len(A)
rightSum = []
leftSum = []
while x < length:
for i in A:
rightSum = A[1:i-1]
leftSum = A[i+1:length-2]
if sum(rightSum) == sum(leftSum):
equi.append(i)
return equi
else:
return -1
x += 1
pass

solution([-1,3,-4,5,1,-6,2,1])

当我编译代码时,我一直在测试列表中得到 -1,即使我应该得到 equi[1,3,7]。

另一个问题,为什么我需要在方法末尾使用'pass'关键字?

我应该补充一点,我对 Python 编码和一般编码都非常陌生。我们将不胜感激。

最佳答案

想想您的函数必须返回的数据类型。它是一个平衡指标列表。

这意味着函数中的每个 return 语句都必须返回一个列表。绝不是数字,绝不是字符串。

对于空表,没有可能的均衡指标; 返回[]

当您找到平衡指数时,您可以将其添加到您的 equi 列表中,正如您正确所做的那样,然后继续。不要从 while 循环中返回 。第一个 return 语句结束函数执行。

当你的循环因为你查看了所有索引而结束时,equi 列表将包含循环找到的所有平衡索引。现在,在循环之后,是时候返回 equi,而不是无用的 pass

(为了加分,你可以计算一次列表的总和,注意向右移动一个索引会在左边的总和中添加一个元素,并从右边的总和中减去相同的元素。这样,你就不会'不必每次都对每个子列表求和;算法的性能将是线性的而不是二次的。)

关于python - Python 2.7 中的平衡索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44425733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com