讨论/技术交流/交流|把一个整数数组的第一个元素和最后一个元素连起来形成一个环,任意截取环中长度为N的连续的一段元素,对这一段元素求和得到一个值,求截取的长度为N时,可以截取到的最大的求和值。有更好的解法吗,欢迎讨论/
交流|把一个整数数组的第一个元素和最后一个元素连起来形成一个环,任意截取环中长度为N的连续的一段元素,对这一段元素求和得到一个值,求截取的长度为N时,可以截取到的最大的求和值。有更好的解法吗,欢迎讨论
//输入cycle=[1,6,9,-1,2,20], N=3
//输出27
static int cycleAdd(int[] cycle, int N) {
    int sum = 0;
    int add = 0;
    int[] cycle2 = new int[cycle.length*2];
    for (int i=0; i<cycle.length; i++) {
        cycle2[i]=cycle[i];
    }
    for (int i=0; i<cycle.length; i++) {
        cycle2[i+cycle.length]=cycle[i];
    }
    int[] arr = new int[N];
    for (int j=0; j<cycle.length; j++) {
        for (int i=0; i<N; i++) {
            arr[i] = cycle2[i+j];
        }
        for (int k=0; k<arr.length; k++) {
            add = arr[k] + add;
        }
        if (add > sum) {
            sum = add;
        }
        add = 0;
    }
    return sum;
}
1
共 3 个回复

具体怎么实现呢

你这题目说的不明白
取任意长度为N的连续的元素,求和得到一个值,求截取的长度为N时,可以截取到的最大的求和值
按照你这个说法全部截取就是最大的和

滑动窗口