D52 LeetCode 396.旋转函数(中等)

D52 LeetCode 396.旋转函数(中等),第1张

一、题目

 

二、思路(自己)
  • 目前的思路是把每种情况算出来,然后得出最大值。
    class Solution {
        public int maxRotateFunction(int[] nums) {
               int l=nums.length;
            int[] res=new int[l];
            for (int i = 0; i < l; i++) {
                for (int j = 0; j < l; j++) {
                    if(i>j){
                        int n=l-i+j;
                        res[i]+=nums[j]*n;
                    }else {
                        res[i]+=nums[j]*(j-i);
                    }
                }
            }
            Arrays.sort(res);
            return res[l-1];
        }
    }

    超出了时间限制。 

三、题解(官方 )
  • 官方用的是迭代
class Solution {
    public int maxRotateFunction(int[] nums) {
        int f = 0, n = nums.length, numSum = Arrays.stream(nums).sum();
        for (int i = 0; i < n; i++) {
            f += i * nums[i];
        }
        int res = f;
        for (int i = n - 1; i > 0; i--) {
            f += numSum - n * nums[i];
            res = Math.max(res, f);
        }
        return res;
    }
}

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/723043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存