基本思路:数学方法,首先用一个值记录第一次的结果,后面的每一次结果都等于前一次结果加上原数组和,再减去n个-i的下标值(为的是让最后一位变为乘以0)代码如下:
class Solution:
def maxRotateFunction(self, nums: List[int]) -> int:
k=sum(nums)
n=len(nums)
j=[0]*n
for i in range (n):
j[0]+=nums[i]*i
for i in range (1,n):
j[i]=j[i-1]+k-n*nums[-i]
return max(j)