• Rotate Function


    Given an array of integers A and let n to be its length.

    Assume Bk to be an array obtained by rotating the array A k positions clock-wise, we define a "rotation function" F on A as follow:

    F(k) = 0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1].

    Calculate the maximum value of F(0), F(1), ..., F(n-1).

    Note:
    n is guaranteed to be less than 105.

    Example:

    A = [4, 3, 2, 6]
    
    F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25
    F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16
    F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3) = 0 + 6 + 8 + 9 = 23
    F(3) = (0 * 3) + (1 * 2) + (2 * 6) + (3 * 4) = 0 + 2 + 12 + 12 = 26
    
    So the maximum value of F(0), F(1), F(2), F(3) is F(3) = 26.


    Analyse:

    0 1 2 3 4 5

    5 0 1 2 3 4  f(0) - sumAll + N * A[0]

    4 5 0 1 2 3  f(1) - sumAll + N * A[1]

    3 4 5 0 1 2  f(2) - sumAll + N * A[2]

    2 3 4 5 0 1  f(3) - sumAll + N * A[3]

    1 2 3 4 5 0  f(4) - sumAll + N * A[4]

     1 class Solution {
     2 public:
     3     int maxRotateFunction(vector<int>& A) {
     4         if (A.empty()) return 0;
     5         
     6         int sumAll = 0;
     7         int previous = 0;
     8         for (int i = 0; i < A.size(); i++) {
     9             sumAll += A[i];
    10             previous += i * A[i];
    11         }
    12         int result = previous;
    13         
    14         for (int i = 0; i < A.size() - 1; i++) {
    15             previous = previous - sumAll + A.size() * A[i];
    16             result = max(result, previous);
    17         }
    18         return result;
    19     }
    20 };
     
  • 相关阅读:
    在阿里云服务器上安装MySQL
    mui中调用ajax时报abort错误
    IDEA根据数据库表生成pojo对象
    java.io.IOException: All specified directories have failed to load.
    mysql隔离级别
    java8新特性
    数据库语言分类
    Spring AOP 代码示例
    java NIO学习(二)
    java NIO学习(一)
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5874190.html
Copyright © 2020-2023  润新知