如果直接用暴力的話,只能過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=0for 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)
下一道