通过在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