Ошибка в алгоритме поиска последовательности единиц
Требуется найти в бинарном векторе самую длинную последовательность единиц и вывести её длину.
Сделал задание, но тесты заваливаются.
import java.util.Scanner;
class Scratch {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
final int count = input.nextInt();
int max = 0;
int result = 0;
for (int i = 0; i < count; i++) {
int value = input.nextInt();
if (value == 1) {
result++;
} else {
if (result > max) {
max = result;
}
result = 0;
}
}
System.out.println(max == 0 && result != 0 ? result: max);
}
}
Проблема возникает, когда обновляется максимальная длина последовательности, например 1 1 0 1 1 1 должно вывести 3, а выводит 2.
В чем причина проблемы вообще не понимаю, почему-то не учитывает последний элемент.
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Пройдите по Вашему коду шаг за шагом (с кaрандашом и листком бумаги) и вообще поймете.
if (value == 1) {
result++;
if (result > max) {
max = result;
}
} else {
result = 0;
}
...
System.out.println(max);
"... мелкоскопа не имеем, а у нас так глаз пристрелявши." Николай Лесков "Левша"