396.rotate-function.go 258 B

123456789101112131415161718
  1. func maxRotateFunction(A []int) int {
  2. n := len(A)
  3. if n <= 1 {
  4. return 0
  5. }
  6. sum, fx := 0, 0
  7. for i, a := range A {
  8. sum, fx = sum+a, fx+i*a
  9. }
  10. max := fx
  11. for i := n - 1; 0 < i; i-- {
  12. fx += sum - n*A[i]
  13. if max < fx {
  14. max = fx
  15. }
  16. }
  17. return max
  18. }