Brute Force TLE
class Solution(object):
def maxRotateFunction(self, A):
"""
:type A: List[int]
:rtype: int
"""
res = self.cal(A)
for i in range(len(A)-1):
A = self.rotate(A)
res = max(res, self.cal(A))
return res
def cal(self, A):
sum = 0
for i in range(len(A)):
sum += i*A[i]
return sum
def rotate(self, A):
pre = A[0]
for i in range(1, len(A)):
temp = A[i]
A[i] = pre
pre = temp
A[0] = pre
return A
class Solution(object):
def maxRotateFunction(self, A):
"""
:type A: List[int]
:rtype: int
"""
res = float('-inf')
n = len(A)
if n==0: return 0
for i in range(n):
sum = 0
for j in range(n):
sum += j*A[(i+j)%n]
res = max(res, sum)
return res
Math trick
class Solution(object):
def maxRotateFunction(self, A):
"""
:type A: List[int]
:rtype: int
"""
size = len(A)
sums = sum(A)
summ = sum( x*n for x, n in enumerate(A))
ans = summ
for i in range(0, len(A)-1):
summ -= sums - size*A[i]
ans = max(ans, summ)
return ans