zoukankan      html  css  js  c++  java
  • 396. 旋转函数(数学)

    暴力超时:时间复杂度 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 }
  • 相关阅读:
    HDU 2955 Robberies
    HDU 2546 饭卡
    poj 3628 Bookshelf 2
    poj 3624 Charm Bracelet
    celery -1
    ☀【Grunt】插件
    【MooTools】
    【Grunt】
    ↗☻【PHP与MySQL程序设计 #BOOK#】第3章 PHP基础
    【CSS】
  • 原文地址:https://www.cnblogs.com/NiBosS/p/12077414.html
Copyright © 2011-2022 走看看