如果直接用暴力的话,只能过4个样例好像,超时
因此得用递推公式
F1=F0+前n-1个数-(n-1)*第n个数
=F0+sum(nums)-n*第n个数
n=len(nums)
ans=[]#定义一个存最大值值的列表
ss = sum(nums)
dm = 0
for j in range(n):
dm += j * nums[j]
ans.append(dm)
print(dm)
num_s=nums
for i in range(1, n):
dm = dm + ss - n*num_s[-1]
ans.append(dm)
num_s=[]
num_s[:] = nums[-i % n:] + nums[:-i % n]
return max(ans)
但是还是超时样例
嗯
应该是python切片也超时了
逆天,
class Solution:
def maxRotateFunction(self, nums: List[int]) -> int:
n=len(nums)
ans=[]#定义一个存最大值值的列表
ss=sum(nums)
dm=0
for j in range(n):
dm+=j*nums[j]
ans.append(dm)
for i in range(1,n):
dm=dm+ss-n*nums[-1]
ans.append(dm)
nums[-1]=nums[-(i+1)]
return max(ans)
下一道