You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组旋转后i*a[i]最大值优化:大数组计算异常求助

数组旋转后i*a[i]之和最大值的计算问题

我要解决的问题是:找出数组经过任意次数顺时针/逆时针旋转后,所有0<=i<=n-1的i*a[i]之和的最大值。目前的Java代码在数组规模≤3000时运行正常,但数组更大时就失效了——1115个测试用例仅通过1110个。我怀疑问题出在迭代计算当前和的逻辑上。

原代码如下:

class Solution {
    long max_sum(int a[], int n) {
        long sum=0;
        long sum1=0;
        for(int i=0;i<n;i++){
            sum=sum+a[i];
            sum1=sum1+(a[i]*i);
        }
        long sumCurr=sum1;
        long sumMax=sum1;
        
        for(int i=n-1;i>=0;i--){
            sumCurr = sumCurr-(n*a[i])+sum;
            sum1=sumCurr;
            if(sumCurr>sumMax){
                sumMax=sumCurr;
            }
        }
        return sumMax;
    }
}

我也曾尝试修改循环逻辑:

for (int i = 1; i < n; i++) {
    sumCurr = sumCurr + sum - n * a[n - i];
    sum1 = sumCurr;
    if (sumCurr > sumMax) {
        sumMax = sumCurr;
    }
}

内容的提问来源于stack exchange,提问作者Mihir Vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:18:16