题目链接:
https://leetcode.com/problems/rotate-function/description/
题解:
一道很好的思维题,我们可以这么去进行思考,将一个状态变成下一个需要的状态,就是将上一个状态的最后的一个数移动到前面,在对其进行求和,其实相当于当前的最后一个数为0,其他的数全部加一。推一下很容易就能推出来。
代码:
class Solution {
public:
int maxRotateFunction(vector<int>& A) {
if(A.size()==1||A.size()==0)
return 0;
long long ans=0;
long long sum=0;
for(int i=0;i<A.size();i++)
{
ans+=A[i]*i;
sum+=A[i];
}
long long MAX=ans;
for(int i=A.size()-1;i>=1;i--)
{
ans+=(sum-A[i]*(int)(A.size()));
MAX=max(MAX,ans);
}
return MAX;
}
};