码迷,mamicode.com
首页 > 其他好文 > 详细

396. 旋转函数(数学)

时间:2019-12-21 18:28:04      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:数组   复杂度   优化   ret   遍历   idt   mamicode   i++   col   

技术图片

 

暴力超时:时间复杂度 O(n^2) 

 1 class Solution {
 2     public int maxRotateFunction(int[] A) {
 3         if(A.length==0) return 0;
 4         int n=A.length;
 5         int res=Integer.MIN_VALUE;
 6         for(int s=0;s<n;s++){
 7             int temp=0;
 8             for(int i=0;i<n;i++){
 9                 temp+=i*A[(s+i)%n];
10             }
11             res=Math.max(res,temp);
12         }
13         return res;
14     }
15 }

 

优化:记录一个数组和sum,初始的F(0)情况,减去一个sum,然后再加上n个A[0]值,这样得到的结果就是下一个F[1]....接下来同理。

技术图片

 1 class Solution {
 2     public int maxRotateFunction(int[] A) {
 3         if(A.length==0) return 0;
 4         int n=A.length;
 5         int sum=0,F=0;
 6         for(int i=0;i<n;i++){ //遍历求和
 7             sum+=A[i];
 8             F+=i*A[i];
 9         }
10         int res=F; //返回值
11         for(int i=0;i<n;i++){ //迭代求取下一个和
12             F-=sum;
13             F+=n*A[i];
14             res=Math.max(res,F);
15         }
16         return res;
17     }
18 }

396. 旋转函数(数学)

标签:数组   复杂度   优化   ret   遍历   idt   mamicode   i++   col   

原文地址:https://www.cnblogs.com/NiBosS/p/12077414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!