原题链接:396. 旋转函数
solution: 找规律
//F(0) = nums[0] * 0 + nums[1] * 1 + nums[2] * 2 + .... nums[n] * n;
//F(1) = nums[0] * n + nums[1] * 0 + nums[2] * 1 + nums[2] * 1 + .... nums[n] * n - 1
//F(2) = nums[0] * n - 1 + nums[1] * n + nums[2] * 0 +.... nums[n] * n-2;
---》》
//F(1) = F(0) - sum(nums) + n * nums(0);
//F(2) = F(F1) - sum(nums) + n * nums(1);
class Solution {
public:
int maxRotateFunction(vector<int>& nums) {
int n = nums.size();
int sum = 0; //数组元素和
int F = 0; //保存更新F(0).F(1)...
int ans = INT_MIN; //返回值
for(int i = 0;i < n;i++){
sum += nums[i];
F += nums[i] * i;
}
for(int i = 0;i < n;i++){
F = F - sum + n * nums[i];
ans = max(ans, F);
}
return ans;
}
};