class Solution {
public int maxRotateFunction(int[] nums) {
int n = nums.length;
int max = Integer.MIN_VALUE;
for(int Fnumber = 0;Fnumber < n;Fnumber ++){
// F(0) ~ F(n-1)
int[] reverseArray = new int[n];
// 翻转用的数组
for(int i = 0;i < n;i ++){
reverseArray[i] = nums[i];
}
// 翻转
reverse(reverseArray,0,n-1);
reverse(reverseArray,0,Fnumber-1);
reverse(reverseArray,Fnumber,n-1);
// 计算F(k)
int sum = 0;
for(int j = 0;j < n; j++){
sum += j*reverseArray[j];
}
if(sum > max) max=sum;
}
return max;
}
/**
* 翻转数组的函数
**/
public void reverse(int[] nums,int start,int end){
int temp = 0;
while(start < end){
temp = nums[start];
nums[start++] = nums[end];
nums[end--] = temp;
}
}
}
leetcode396:旋转数组
最新推荐文章于 2022-04-27 22:28:01 发布