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

  • 5
  • Недоступна
Если числа повторяются, значит, это кому-нибудь нужно? В данный момент это нужно нам, чтобы потренироваться решать задачи на списки. Давайте создадим список чисел и добавим в него 10 чисел с клавиатуры. Наша задача состоит в том, чтобы вывести на экран длину самой длинной последовательности повторяющихся чисел в списке.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (274)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Валерий8 уровень
вчера, 13:53
фух, решил с 3 попытки за 4 часа. Сначала хотел не усложнять и сделал с int count =Collections.frequency(list, i); но оказалось что эта строчка считает общее количество повторяющихся элементов в ряду. Тогда сделал с list.get(i).equals(list.get(i-1)), но не мог понять почему компилятор ругается на второй get(). Потом понял, что в цикле for перебор нужно делать не с нулевого индекса, а с последнего. И программа наконец то заработала. Ну и еще пару ошибок пришлось устранить с if-ками.
Евгений10 уровень, Днепр
пятница, 20:13
Hint: дополнительный цикл для определения максимальной длины последовательности не нужен.
Юрий Рощенко30 уровень
12 февраля, 21:34
Что за бред, List не проходит, ArrayList - проходит?
Дмитрий Ильин8 уровень, Москва
12 февраля, 10:23
решил так: создал переменную в которой храниться итоговое число последовательностей создал цикл для прохода по списку, в нём сразу создал переменную для хранения промежуточного результата, в этом же цикле создал еще цикл для прохода и сравнения чисел , потом ифами сравнивал первое число со следующим и ели они были равны прибавлял ++ к промежуточному результату и сравнивал его с итоговым результатом, если промежуточный был больше то итоговому присваивал результат промежуточного если последовательность обрывалась обнулял промежуточный результат и цикл шёл дальше , ну и собсна всё, долго не мог понять почему не принимает == ну и уже из коментов понял что equals правильнее :)
Tanarri10 уровень
12 февраля, 08:59
ха, забыл снимать последний счетчик на последнем элементе. решал через if/else
Влад8 уровень
11 февраля, 17:43
Е*учий
if (s.isEmpty()) break;
. Задал сразу через for на 10 элементов и валидатор сразу пропустил. 5 дней потратил на выяснения почему выбрасывает нуль поинтер эксепшен....
funkagenda8 уровень
10 февраля, 18:55
Валидатор не принимает:
List<Integer> list = new ArrayList<>();
а как же полиморфизм? Причем в предыдущей задаче проблем с этим не возникло.
позавчера, 15:39
3 пункт условия задачи посмотри.
Yan Nezamutdinov8 уровень
8 февраля, 14:32
И еще один алгоритм придумал:
int max = 1;
        int count = 0;
        int isFirst = 0;
        int prev = 0;
        for (Integer x : list) {
            if (isFirst == 0) {prev = x; isFirst=1; }
            if (x == prev) {
                count++;
            } else{
            if (count > max) {max = count; } count = 1; }
            prev = x;
        }
        if (max<count){max=count;}
И он на 10000000 элементах показал лучшие результаты.
Евгений10 уровень, Днепр
пятница, 20:11
Ляжет, если последовательность без повторов, а первое значение 0. Я для исключения такой ошибки использовал
Double prev = 1.0 / 0;
Serhii Harasymiv9 уровень
7 февраля, 16:47
таке написав, але пройшло..))
7 февраля, 07:59
Во время решения задачи я смог запомнить что Integer это объекты