189. 轮转数组


class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int len=nums.size();
        vector<int> num(len);
        for(int i=0;i<len;i++){
            num[(i+k)%len]=nums[i];
        }
        nums.assign(num.begin(),num.end());
    }
};
旋转数组

没看出数学公式gg
 正确答案
 
class Solution {
public:
    int maxRotateFunction(vector<int>& nums) {
        int f = 0, n = nums.size();
        int numSum = accumulate(nums.begin(), nums.end(), 0);
        for (int i = 0; i < n; i++) {
            f += i * nums[i];
        }
        int res = f;
        for (int i = n - 1; i > 0; i--) {
            f += numSum - n * nums[i];
            res = max(res, f);
        }
        return res;
    }
};
超时答案
class Solution {
public:
    int maxRotateFunction(vector<int>& nums) {
        int len=nums.size();
        int max=0x80000000;
        for(int i=0;i<len;i++){
            int sum=0;
            for(int j=0;j<len;j++){
                sum+=nums[j]*((j+i)%len);
            }
            if(sum>max){
                max=sum;
            }
        }
        return max;
    }
};



















