java算法收藏

文章讨论了在计算列表中连续n日和的最大值时,为了避免初始值影响结果,应将maxSum初始化为Integer.MIN_VALUE。作者给出了一个Java代码示例,演示如何找到最大和及其对应的起始索引,同时处理了连续天数大于列表长度的情况。
摘要由CSDN通过智能技术生成

 计算list中连续几日和的最大值所对应的第一位数的索引

如果将maxSum设置为0,那么在比较连续3日和的时候,初始的maxSum值可能会影响最终的结果。具体来说,如果列表中的所有和都是负数,那么初始的maxSum值为0可能会导致错误的结果。

假设maxSum初始值为0,而列表中的所有和都是负数,那么无论怎样计算,maxSum的值都不会被更新,最终的结果仍然是0,这显然是不正确的。

因此,为了确保正确性,我们将maxSum初始化为Integer.MIN_VALUE,这样无论列表中的和是什么,初始的maxSum值都会被正确更新。

package com.charsming;

import cn.hutool.core.convert.Convert;
import com.charsming.wysk.domain.vo.PptnRVO;
import java.util.*;
import java.util.stream.Stream;

/**
 * @author Gaodeman
 */
public class Test {
    public static void main(String[] args) throws Exception {

        List<Integer> numbers = new ArrayList<>();
        // 添加数据到 numbers 列表中
        numbers.add(1);
        numbers.add(10);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);
        int n = 2; // 设置连续天数
        int[] result = findMaxNDaySum(numbers, n);
        System.out.println("连续" + n + "日和的最大值为: " + result[0]);
        System.out.println("第一位数的索引为: " + result[1]);
    }

    public static int[] findMaxNDaySum(List<Integer> numbers, int n) {
        if (n > numbers.size()) {
            throw new IllegalArgumentException("连续天数大于列表长度");
        }

        int maxSum = Integer.MIN_VALUE;
        int startIndex = 0;

        for (int i = 0; i <= numbers.size() - n; i++) {
            int sum = 0;
            for (int j = 0; j < n; j++) {
                sum += numbers.get(i + j);
            }
            if (sum > maxSum) {
                maxSum = sum;
                startIndex = i;
            }
        }

        return new int[]{maxSum, startIndex};
    }
    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzhSWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值