通过在Python中重新排列元素来获得列表的最大幂值的程序
假设我们有一个N个正数的列表。现在,我们可以从列表中选择任何单个值,然后将其移动(而不是交换)到任何位置。我们也完全不能移动任何位置。因此,我们必须找到列表的最大可能最终功效是什么?众所周知,列表的功效是所有索引i上(index+1)*value_at_index的总和。
$$\displaystyle\sum\limits_{i=0}^{n-1}(i+1)\timeslist[i]$$
因此,如果输入类似于nums=[6,2,3],那么输出将为26,因为我们可以将6移到末尾以获取列表[2,3,6],因此幂为:(2*1)+(3*2)+(6*3)=26。
示例
让我们看下面的实现以更好地理解-
class Solution:
def solve(self, A):
P = [0]
base = 0
for i, x in enumerate(A, 1):
P.append(P[-1] + x)
base += i * x
ans = base
for i, x in enumerate(A):
for j in range(len(A) + 1):
ans = max(ans, base + P[i] - P[j] - (i - j) * x)
return ans
ob = Solution()
nums = [6, 2, 3]
print(ob.solve(nums))输入值
[6, 2, 3]
输出结果
26