我正在尝试计算随机生成的数组MOODS中连续增加的元素的最长字符串。此代码总是返回比正确值少一的值。

    int maxDays = 0;
    int days = 0;
    for (int i = 0; i < MOODS.size() - 1; i++) {
        if (MOODS.get(i + 1) > MOODS.get(i)) {
            days += 1;
        if(days>maxDays){
            maxDays=days;
        }
        } else {
            days = 0;
        }

    }
    return maxDays;
}

最佳答案

您将始终至少有一个长度为1的递增字符串序列。只需将天数更改为1即可使用。

int maxDays = Math.min(1, MOODS.size());
int days = 1;
for (int i = 0; i < MOODS.size() - 1; i++) {
    if (MOODS.get(i + 1) > MOODS.get(i)) {
        days += 1;
        if (days>maxDays){
            maxDays=days;
        }
    } else {
        days = 1;
    }
}
return maxDays;

09-26 05:16