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 }
  • 相关阅读:
    Oracle进程
    Oracle 内存管理
    oracle 数据文件管理
    Oracle表空间
    EM配置问题
    Oracle 常用命令
    Oracle体系结构
    Orcale 数据加载
    Oracle学习笔记(1)
    设计模式-23种参考模式
  • 原文地址:https://www.cnblogs.com/NiBosS/p/12077414.html
Copyright © 2011-2022 走看看