undefined

Задачи на измерение производительности списков

Java Syntax
8 уровень , 6 лекция
Открыта

— А вот и ты. Я уже начал скучать. Где это ты пропадал? Вот тебе задачи.

— Интересные?

— Ну конечно! Очень интересные:

undefined
2
Задача
Java Syntax,  8 уровень,  6 лекция
Недоступна
LinkedList и ArrayList
Коллекции могут быть реализованы разными способами и нет единственного – самого правильного. При одном подходе одни операции являются быстрыми, а остальные медленными, при другом – все наоборот. Нет одного идеального, подходящего всем решения. Не будем мучится выбором и создадим сразу два списка — LinkedList и ArrayList.
undefined
5
Задача
Java Syntax,  8 уровень,  6 лекция
Недоступна
10 тысяч удалений и вставок
Повторение однообразных действий без нытья и катанья — вот чем славны компьютеры, вот чего помогают избегать программисты простым смертным! Не будь средств автоматизации повторений, условие этой задачи звучало бы как приговор. А так вроде бы все нормально: для arrayList и linkedList провести 10 тысяч вставок, удалений, а также вызовов get и set.
undefined
2
Задача
Java Syntax,  8 уровень,  6 лекция
Недоступна
Время для 10 тысяч вставок
Время — наш самый ценный ресурс. На всех планетах, за исключением Тральфамадора, над ним власти нет. Поэтому на Тральфамадоре нет программистов, а на Терре — их полно, потому что они помогают другим экономить свое время. Давайте измерим, сколько времени занимает 10 тысяч вставок для списков LinkedList и ArrayList и восхвалим автоматизацию.
undefined
2
Задача
Java Syntax,  8 уровень,  6 лекция
Недоступна
Время для 10 тысяч вызовов get
Много ли времени и усилий вы готовы потратить, чтобы получить какое-либо благо? Думаем, достаточно, вы же пытаетесь стать программистом прямо сейчас? Давайте посмотрим, сколько времени занимает 10 тысяч вызовов get для списков LinkedList и ArrayList. Метод getGetTimeInMs должен вернуть время своего исполнения в миллисекундах.
undefined
2
Задача
Java Syntax,  8 уровень,  6 лекция
Недоступна
Квартет «Методы»
В этой задаче мы работаем со списками LinkedList и ArrayList, и вот каким образом. Нам нужно реализовать 4 метода. Каждый из них должен возвращать список, который лучше всего подходит для выполнения данных операций (быстрее всего справится с большим количеством операций). А вот измерять ничего не нужно.
undefined
10
Задача
Java Syntax,  8 уровень,  6 лекция
Недоступна
Cамая длинная последовательность
Если числа повторяются, значит, это кому-нибудь нужно? В данный момент это нужно нам, чтобы потренироваться решать задачи на списки. Давайте создадим список чисел и добавим в него 10 чисел с клавиатуры. Наша задача состоит в том, чтобы вывести на экран длину самой длинной последовательности повторяющихся чисел в списке.
Комментарии (492)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Дмитрий 8 уровень, Одесса
14 февраля 2021
Подскажите, что не так с кодом (я знаю что есть более элегантное решение и меньше строк), выдаёт ошибку, что при вводе конкретных цифр не будет выдавать корректный результат, но проверяя в идее как раз корректный результат и выдаёт

class Test {
    public static void main(String[] args) throws IOException{
        List<Integer> array = new ArrayList<>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 0; i<10; i++){
            array.add(Integer.parseInt(reader.readLine()));
        }
        int firstDouble = 1;
        int indexOfFirstDuplicate = 0;
        int secondDouble = 1;

        for (int i = 0; i < array.size() - 1; i++) {
            if (array.get(i) == array.get(i + 1)) {
                for (int s = i; s < array.size() - 1; s++) {
                    if (array.get(s) == array.get(s + 1)) {
                        firstDouble++;
                    } else if (array.get(s) != array.get(s + 1)) {
                        indexOfFirstDuplicate=s;
                        break;

                    }
                }
                break;
            }
        }


        for (int i = indexOfFirstDuplicate;i<array.size()-2;i++){
            if (array.get(i) == array.get(i + 1)) {
                secondDouble=1;
                for (int s = i; s < array.size() - 2; s++) {
                    if (array.get(s) == array.get(s + 1)) {
                        secondDouble++;
                        if (firstDouble<secondDouble){
                            firstDouble=secondDouble;
                            indexOfFirstDuplicate=s;
                        }
                    }
                    else break;
                }

                }
            }
        System.out.println("Количество повторений-"+firstDouble);
        }
    }
Vladimir 9 уровень, Нижний Новгород
9 февраля 2021
Да...Тут у всех Integer все сломал, а я наоборот не мог алгоритм написать сразу...😬(где смайл рука-голова??)
Flexo 18 уровень, New New York
30 января 2021
Не обойдите стороной последнюю задачу. Она уровня hard только потому, что вы чего-то ещё не знаете, а не потому, что на неё может уйти много времени.
Валерий Пантелеев 9 уровень, Тюмень
26 января 2021
127. Узнал много нового... 😵
Dmitriy Romakin 18 уровень, Москва
26 января 2021
Последняя задача бомбическая)) Благодарю создателей задачи))
Error 404 13 уровень, Краснодар
14 января 2021
Для задачи HARD будет полезно почитать: https://javarush.ru/groups/posts/2743-rukovodstvo-po-klassu-java-integer
UVM 8 уровень
30 декабря 2020
В шестой задаче ВАЖНО: стартовые значения и значения в цикле при переборе и способ попарного сравнения
UVM 8 уровень
29 декабря 2020
Для 5 ой задачи см. ArrayList vs. LinkedList_Java Syntax_8 уровень_5 лекция
UVM 8 уровень
29 декабря 2020
4 я ничем не отличается от третьей.
UVM 8 уровень
29 декабря 2020
Для 3 ей задачи см. Знакомимся с классом Date Java Syntax_8 уровень_4 лекция