通过在Python中重新排列元素来获得列表的最大幂值的程序

假设我们有一个N个正数的列表。现在,我们可以从列表中选择任何单个值,然后将其移动(而不是交换)到任何位置。我们也完全不能移动任何位置。因此,我们必须找到列表的最大可能最终功效是什么?众所周知,列表的功效是所有索引i上(index + 1)* value_at_index的总和。

$$\displaystyle\sum\limits_{i=0}^{n-1} (i+1)\times list[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
猜你喜欢