Leetcode——数组的旋转

189. 轮转数组

Leetcode——数组的旋转_第1张图片Leetcode——数组的旋转_第2张图片

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());
    }
};

旋转数组

Leetcode——数组的旋转_第3张图片

没看出数学公式gg
正确答案
Leetcode——数组的旋转_第4张图片

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;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)