LeetCode 396. 旋转函数

Posted live4m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 396. 旋转函数相关的知识,希望对你有一定的参考价值。

题意:


解法:

每次a顺时针旋转一步时,
f(k)f(k+1)的变化为+sum(a[])-当前末尾元素*n

取max就是答案

code:

class Solution 
public:
    int maxRotateFunction(vector<int>& a) 
        int n=a.size();

        int now=0;
        int sum=0;
        for(int i=0;i<n;i++)
            sum+=a[i];
            now+=i*a[i];
        

        int ans=now;
        for(int i=n-1;i>0;i--)
            now-=n*a[i];
            now+=sum;
            ans=max(ans,now);
        

        return ans;
    
;

以上是关于LeetCode 396. 旋转函数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 824. 山羊拉丁文 / 396. 旋转函数 / 587. 安装栅栏(不会,经典凸包问题,学)

396. 旋转函数(数学)

java 396.旋转Function.java

leetcode 33 Search in Rotated Sorted Array

LeetCode 81.搜索旋转排序数组 II

LeetCode 62,从动态规划想到更好的解法