396. 旋转函数

 1 // F[i + 1] - F[i] = sum - n * A[n - 1 - i]
 2 class Solution 
 3 {
 4 public:
 5     int maxRotateFunction(vector<int>& A) 
 6     {
 7         if(A.empty()) return 0;
 8         int F = 0;
 9         long long sum = 0;
10         int n = A.size();
11         for(int i = 0;i < n;i ++) 
12         {
13             sum += A[i];
14             F += i*A[i];
15         }
16         int res = F;
17         for(int i = 0;i < n - 1;i ++)
18         {
19             F += (sum - A.size() * A[n - 1 - i]);
20             res = max(res,F);
21         }
22         return res;
23     }
24 };

 

posted @ 2020-04-28 17:53  Jinxiaobo0509  阅读(223)  评论(0)    收藏  举报