Cамая длинная последовательность

  • 10
  • Недоступна
Если числа повторяются, значит, это кому-нибудь нужно? В данный момент это нужно нам, чтобы потренироваться решать задачи на списки. Давайте создадим список чисел и добавим в него 10 чисел с клавиатуры. Наша задача состоит в том, чтобы вывести на экран длину самой длинной последовательности повторяющихся чисел в списке.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (524)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Арен8 уровень, Москва
вчера, 22:11
Все примеры выполняются правильно, но проверку не проходит.. List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) list.add(Integer.parseInt(reader.readLine())); int k = 1; int mx = 1; for (int i = 1; i < 10; i++) { if (list.get(i-1).equals(list.get(i))) k++; else if (mx <= k) {mx = k; k = 1;} } if (mx < k) mx = k; System.out.println(mx); } }
Pavel Samburg8 уровень
17 февраля, 23:41
Как и у ораторов ниже ушло около 5 часов, но это же кайф в итоге самому решить. Для тех кто залез сюда посмотреть подсказки, но ещё не сдался: напишите у себя в блокноте разные примеры вывода десяти чисел и вручную напишите что должно происходить. Для меня это и оказалось главной разгадкой.
Vad9 уровень
17 февраля, 20:46
/*алгоритм подсчёта длин повторяющихся последовательностей и запоминания максимальной : */ int j=1, k=1; for(int i=1; i<10; i++) { if(list.get(i).equals (list.get(i-1))) j++; else {if(k<j) {k=j;} j=1;} } //end for2 if(k<j) k=j; Вот такая ... многоярусная получилась. :-) С == и equals только проблемка вышла в этом месте...
Артём Кравченко9 уровень, Таганрог
14 февраля, 17:46
Решил с одним счётчиком и одной переменной для хранения максимума Решение оказалось настолько простым и понятным, что я прям не ожидал. P. S. На бумаге вручную алгоритм построился сразу, но никак не мог понять, как это всё закодировать.
Антон10 уровень
10 февраля, 19:27
в такие моменты чувствую себя глупым! List<Integer> arrayList = new ArrayList<>(); ЗАЧЕМ нужно именно так объявлять? 5 попыток на эту хрень, бесит!
Андрей Хорошилов9 уровень, Москва
10 февраля, 21:36
5 попыток на "прочитать задание"? там же этот прямым текстом указано..
BuTbk@13 уровень, Москва
11 февраля, 11:48
Тоже попался на этом. Но после первого фэйла поправил )
Igor Zaharov9 уровень
10 февраля, 09:13
Задача супер!!! Только советую решать самому даже если понадобится куча времени, не смотрите в решение!!
Николай Б10 уровень, Минск
7 февраля, 01:04
Ура. Решил. с помощью двух счетчиков (один вычислял количество повторов и сравнивал с "базовым", который при большей длине приравнивался к первому) , а также приведения Integer к int: if ((int) list.get(i) == (int) list.get(i - 1)) Короче ,часов 5 времени и много нервов задача поела)
NikeMirum13 уровень, Великий Новгород
4 февраля, 17:49
Сделал с двумя счётчиками, без итераторов. Но выводилась ошибка несоответствия последнего требования с рекомендацией "Убедись, что если введены неповторяющиеся числа, то длина последовательности равна 1." Парился долго, тестил по-разному. Всё работало, но валидатор не пропускал. Оказалось просто валидатор не любит статические счётчики. Как только переменные убрал в main - Всё заработало! Так и не понял, чем валидатору статические счётчики не угодили?!
DeadST@1keR11 уровень, Москва
11 февраля, 11:18
Спасибо, тоже использовал статические счетчики. И тоже валидатор не пропускал решение.
Евгений9 уровень
31 января, 20:23
это жесть, решил через костыль, но все таки заработало после 4 бессонных ночей
Igor Zaharov9 уровень
10 февраля, 09:13
я тоже очень долго мучался)))
Константин10 уровень
26 января, 16:55
час мучал листИтератор, так и не смог вымучит решение с его помощью, решил просто проверкой сразу после добавления элемента, может кто-то решил при помощи итератора, бросьте пожалуйста код подсмотреть и поучиться
Константин10 уровень
4 февраля, 13:00
ЛистИтератор позволяет "ходить назад" по-моему
Peter18 уровень, Москва
5 февраля, 13:18
Мне не удалось заставить его это сделать. Если позволяет, тогда все решается проще.
Константин10 уровень
5 февраля, 15:35
я честно говоря не проверял работу еще, но так для теста писал вроде всё было ок previous() у ListIterator
Peter18 уровень, Москва
5 февраля, 17:31
Да, верно, ListIterator умеет. Тогда все немного проще
Peter18 уровень, Москва
5 февраля, 19:08
Проблема в том, что в общем виде итератор по коллекциям не умеет ходить назад. Это возможно только в тех коллекциях, где есть какой-то порядок элементов. В ArrayList, например, он есть. А в любом Set уже нет. Так что, если мы пишет какой-то общий метод, который должен работать с любой коллекцией, то не стоит надеяться на то, что итератор имеет метод Previous(). Мой пример должен работать для любого типа numbers, лишь бы этот тип имплементировал интерфейс Iterable. Но все равно выглядит коряво...