找到加权列表的中间位置

时间:2017-06-06 11:21:06

标签: python

如何查找最小化i的索引abs(sum(A[:i])-sum(A[i:]))

示例:

ex1: A = [1, 2, 3, 4, 5], i = 3
ex2: A = [1, 2, 3], i = 2
ex3: A = [9, 1, 2, 3, 4], i = 1
ex4: A = [1, 2, 3, 4], i = 3

1 个答案:

答案 0 :(得分:2)

让我们用S i 表示值abs(sum(A [:i]) - sum(A [i:]))。如果你知道所有的价值,你可以找到最低价值,对吗?做一个简单的迭代并找到这个值。

现在的问题是如何计算值S i 。事实证明这并不是很难:首先计算所有元素SUM的总和。然后从左向右迭代并累加当前位置左侧的所有元素的总和(表示左 i )。 S i = abs((SUM - left i ) - left i )。

所以你需要做的是对输入进行两次迭代 - 一次计算总和,第二次找到值S i (并找到它们的最小值)。