zoukankan      html  css  js  c++  java
  • [LeetCode]396. Rotate Function

    感觉自己的观察力太弱了

    题目很明显的列出了所有计算式,明显就是有规律需要观察

    以后遇到需要求出很多相同计算方法的计算式前,要注意是不是可以用迭代,利用前一次的结果

    public int maxRotateFunction(int[] A) {
            /*
            想要求得最大的,必须要全部求出来,没有规律可以直接求最大的
            先旋转数组然后计算耗时很多
            看了答案是用的迭代法,当前的结果用上次的结果得到,而第一次的结果最好求
            当前计算式和上次计算式是由规律的,看了答案才看出来,斜着对应的一个规律
            看一下例子就看出来了:
            F(k) - F(k-1) = Bk[1] + Bk[2] + ... + Bk[n-1] + (1-n)Bk[0]
                  = sum - nBk[0]
             */
            int len = A.length;
            int sum = 0;
            int f = 0;
            //求sum和第一次的结果
            for (int i = 0; i < len; i++) {
                f += i*A[i];
                sum+= A[i];
            }
            int res = f;
            for (int i = 1; i < len; i++) {
                int cur = f+sum-len*A[len-i];
                res = Math.max(cur,res);
                f = cur;
            }
            return res;
        }
  • 相关阅读:
    重构drf后的环境变量配置
    分离的前后台交互
    虚拟环境的搭建
    Python
    Python
    Python
    Python操作MongoDb数据库
    Python操作SQLite/MySQL/LMDB
    数据库-如何创建SQL Server身份验证用户
    Python
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8485315.html
Copyright © 2011-2022 走看看