gpt4 book ai didi

java - 非递减序列的最大和

转载 作者:行者123 更新时间:2023-12-01 15:34:58 24 4
gpt4 key购买 nike

例如。 -3,6,11,13,5,-11,4,7,8最大和=30(6,11,13因为加上-3会使和变小)

例如。 7,0,-3最大和=7

例如 4,-1,45 最大总和 = 45

例如-3-,-2,-6,0最大和=0

需要对我的代码提供一些建议,仍然有问题

    int maxSum = Integer.MIN_VALUE;
int sum = 0;
int checkNeg = Integer.MIN_VALUE;

for (int i = 0; i < a.length; i++) {
if (a[i] > checkNeg) {
checkNeg = a[i];
}
}

if (checkNeg <= 0) {
maxSum = checkNeg;
}

if (checkNeg > 0) {
for (int i = 0; i < a.length; i++) {
if (a[i] != 0) {
sum += a[i];
if (sum > maxSum) {
if (i != 0) {
if (a[i] >= a[i - 1]) {
maxSum = sum;
} else {
sum = a[i];
}
} else {
maxSum = sum;
}
}
if (sum < 0) {
sum = 0;
}
} else {
sum = 0;
}
}
}
return maxSum;

最佳答案

试试这个

        int maxSum = Int32.MinValue;
int sum = 0;

for (int i = 0; i < a.Length; i++)
{
if (a[i] >= 0)
{
sum += a[i];
maxSum = Math.Max(sum, maxSum);

if ((i+1<a.Length) && (a[i+1] < a[i]))
sum = 0;
}
else
{
maxSum = Math.Max(a[i], maxSum);
sum = 0;
}
}

return maxSum;

似乎适用于您的所有示例和其他几个示例。

不需要“checkNeg”,该检查应该更自然地从算法中得出

关于java - 非递减序列的最大和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com