通过在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
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短