水下功夫做透,水上才能顺风顺水。

旋转函数

给定一个长度为 n 的整数数组 nums 。

假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数  F 为:

F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1]
返回 F(0), F(1), ..., F(n-1)中的最大值 。

生成的测试用例让答案符合 32 位 整数。

public int maxRotateFunction(int[] nums) {
        int sum = 0;
        int Fk = 0;
       
        int len = nums.length;
        for(int i=0; i<len; i++){
            sum += nums[i];
            Fk += i*nums[i];
        }
         int max = Fk;
        for(int i =1; i<len; i++){
            Fk = Fk+sum-len*nums[len-i];
            if(Fk>max){
                max = Fk;
            }
            
        }
        return max;
        
    }

 

posted @ 2022-02-27 20:57  北方寒士  阅读(156)  评论(0)    收藏  举报