二、思路(自己)
- 目前的思路是把每种情况算出来,然后得出最大值。
class Solution { public int maxRotateFunction(int[] nums) { int l=nums.length; int[] res=new int[l]; for (int i = 0; i < l; i++) { for (int j = 0; j < l; j++) { if(i>j){ int n=l-i+j; res[i]+=nums[j]*n; }else { res[i]+=nums[j]*(j-i); } } } Arrays.sort(res); return res[l-1]; } }
超出了时间限制。
- 官方用的是迭代
class Solution {
public int maxRotateFunction(int[] nums) {
int f = 0, n = nums.length, numSum = Arrays.stream(nums).sum();
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 = Math.max(res, f);
}
return res;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)