旋转函数
给定一个长度为 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; }

浙公网安备 33010602011771号