у нас есть массив рейтингов, мы должны найти максимальный рейтинг в таком месте, чтобы мы не могли пропустить 1 или более последовательных рейтингов в массиве
Example-1: {9,-1,-3,-4,-5} output = 9 + -1 + -4 = 4
Объяснение: Я взял 9, у нас естьчтобы взять -1 или -3, мы не можем сразу перейти к -4, так как мы не можем пропустить 1 или более последовательных чисел.
Example-2: {-1,-2,-3,-4,-5} output = -2 + -4 = -6
Example-3: {-3,2,-4,-1,-2,5} output = 2 + -1 + 5 = 6
Example-4: {9,-1,-3,4,5} output = 9 + -1 + 4 + 5 = 17
Я попробовал приведенный ниже код, но он работает в случае примера: 2,3,4, но не для примера 1, аналогично сбой в другом сценарии.
static int maximizeRatings(int[] ratings) {
int current = 0;
boolean result = false;
for(int j=0; j<ratings.length;j++){
if(ratings[j]<0){
result = true;
}else{
result = false;
}
}
if(result){
return allnegatine(ratings);
}
for(int i=0; i<ratings.length;i++){
if(i == ratings.length-1){
if(ratings[i] > 0)
current += ratings[i];
}else{
if(ratings[i] >0 && ratings[i+1]>0){
current = ratings[i]+ratings[i+1];
i++;
}
if(ratings[i] > ratings[i+1]){
current += ratings[i];
}else{
current += ratings[i+1];
i++;
}
}
}
return current;
}
private static int allnegatine(int[] ratings) {
int current =0;
for(int i=0; i<ratings.length;i++){
if(ratings.length%2==0){
if(i%2 == 0)
current += ratings[i];
}else{
if(i%2!=0)
current += ratings[i];
}
}
return current;
}
не получено исключениедля некоторых сценариев, таких как пример 1, я получаю -6 вместо 4, я пытаюсь получить правильный код, который будет проходить все сценарии.Спасибо