Такое дело, решаю задачу по выводу на экран максимальный байтов. Для подсчета использую такой код:
int n = 0;
ArrayList<Integer> result = new ArrayList<Integer>();// Объявляю массив, в который помещаю количество повторов. Понимаю сейчас, что кривовато,
// но на тот момент пока так.
Collections.sort(array); //Сортирую массив заполненный байтами из файла.
for (int i = 0; i < array.size(); i++){
for (int j = i + 1; j < array.size(); j++){
if (array.get(i) == array.get(j)){
n = n + 1; //подсчитываю количество повторов пока элементы совпадают
}
else{ //если следующий не совпадает с предыдущим, то добавляем количество повторов в массив result
result.add(n);
i = j - 1; // таким образом я прерываю цикл и переношу маркер первого цикла на конец повторяющейся цепочки
j = array.size();
}
}
n = 0;
}
Все, затем ищу максимум в массиве, затем ищу количество повторов максимума в массиве исходном. Может не очень красиво, но ВРОДЕ работает. Валидатор проглатывает.
Далее следующая задача на минимумы. По идее надо использовать такой же блок. Копирую его, переделываю вывод минимумов и НЕ РАБОТАЕТ!
Начинаю разбираться и нахожу ошибку: не корректно подсчитываются повторы в конце массива. Естественно валидатор не пропускает. Но ведь в первой задаче пропустил. Как такое возможно?
Много букв в простом вопросе про валидатор, но хотел объяснить, почему возник этот вопрос.
Евгений
34 уровень
Скажите, а валидатор может ошибаться?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
2 декабря 2020, 11:10полезный
Валидатор - это набор тестов. Он прогоняет твой код на разных наборах данных и сравнивает получившийся результат с ожидаемым.
Может так случиться, что на тех тестах, которые он прогоняет, ошибка не проявилась - и валидатор пропустил решение.
Но лучше всегда разбирать на конкретном коде.
+1
Евгений
2 декабря 2020, 11:12
Спасибо, я вчера столько времени потратил впустую, прежде чем понял, что в предыдущей решённой задаче была ошибка.
0