JavaRush /Курсы /Java Syntax /Задачи на измерение производительности списков

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

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

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

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

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

Комментарии (553)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
30 апреля 2025
блин задачи стали такими сложными
Egor Bulkov Уровень 1
7 марта 2025
вообще перестал что-то понимать (( приходится курс откладывать и искать информацию из других источников, читать книги, что очень не удобно - это тормозит процесс обучения
11 мая 2024
а вот при выполнении команды add linkedlist прям показывает чудо производительность на фоне array list, тут все как в лекции говорили
11 мая 2024
10 тысяч удалений и вставок Здесь я попробовал выполнить команды list.set c 5000, особой разницы между arraylist и linkedlist не увидел если честно... Я так понимаю должно быть миллион вставок чтобы было заметно?
11 мая 2024
Хотя нет, беру слова назад) Прикрутил время с прошлой задачи для вычисления времени выполнения программы в мс. Получается операции set, remove увеличивают время выполнения методов в 2 раза в пользу arraylist. Так что я не понял почему советовали использовать linkedlist в прошлой лекции для таких операции... Current date: Sat May 11 21:47:28 QYZT 2024 arraylist -100 linkedlist -235 Итого методы для arraylist выполнились за 100 миллисекунд, для linkedlists 235 секунд... После увеличений числа операции с 10 000 до 100 000 следующий итог: Current date: Sat May 11 21:55:33 QYZT 2024 arraylist -4067 linkedlist -39137 Тут вообще 9-кратное преимущество в скорости у arraylist. Как по мне если хотим производительности то надо юзать arraylist.
2 февраля 2024
Чтобы последняя решалась в 10 простых строчек, надо взять цикл по листу, а внутри него еще один цикл, который проверяет следующие элементы. Если следующий элемент такой же - увеличиваем переменную самой длинной последовательности. Если следующий элемент другой - продолжаем внешний цикл с того места, докуда дошли во внутреннем. Решение здесь, если кто захочет разобраться (не подглядывайте заранее!): https://pastebin.com/dFFXbVVp
Larandvik Уровень 30
14 февраля 2023
С последней задачей возился часа 3, создал 2 лист, кучу условий... Валидатор не пустил, сказал, что слишком сложно)) Правильно говорят "Делай только то, что от тебя просят" Маленькая подсказка для таких как я : Сравнивать можно и нужно только 2 последовательности чисел, иначе можно пропускать и следующую сравнивать с той что была больше в прошлый раз.
Anton Podoynikov Уровень 11
15 января 2023
Отличная вещь дебаггер.
Alex Pa Уровень 29
26 июля 2022
у меня не было лекции по Linked list.
Иван Уровень 25
11 сентября 2022
у меня была лекция по Linked list.
Byte Boss Уровень 33
5 марта 2023
И у меня была 😎
k Уровень 39
13 мая 2023
у меня была лекция по Linked list.
Artur Abubakirov Уровень 16
3 апреля 2024
у меня тоже была)
Александр Уровень 9
3 июня 2022
Я вот не понимаю почему не пропускает числа бальше 127 если сравнивать не через equals, а вот так list.get(i)==list.get(i-1), может кто объяснить ?
YesOn Уровень 13
1 августа 2022
Скорее всего потому что i типа int.
Евгений Уровень 47
15 августа 2022
Так тип int гораздо шире 127 чисел. Я тоже не понимаю, почему не работает этот вариант.
Dmitrii Уровень 11
22 октября 2022
Integer является ссылочным типом данных. Числа Integer могут сравниваться через == только в радиусе -128 до 127. Причина - кэширование этого диапазона чисел. Данный диапазон чисел уже имеется в памяти , и при создании ,например, new Integer(120), мы создадим не новый объект , а лишь ссылку на ячейку памяти кэша с числом 120. То есть new integer(120) == new Integer(120) будет true , так как оба объекта являются лишь ссылками на уже имеющийся в кэше памяти. А new Integer(1000) == Integer(1000) будет false , так как оба числа не существует в памяти , и создаются два разных объекта, даже если содержимое будет одинаковым. -То есть , если памяти нет объекта , создаётся новый объект. -Если в памяти есть объект(был создан вами или уже имеется по умолчанию), то создаётся ссылка на этот объект. Любое сравнение ссылочных типов данных делается через equals. Character, Integer, String, Long, Cat, Dog Object... все сравнения делаются через equals, если мы хотим сравнить конкретно содержимое ссылок. По этому New Integer(1000).equals(New Integer(1000)) будет одним из наиболее верных вариантом. Можно так же вызвать у Integer само число , которое хранится в виде int и сравнивать уже их . но это больше кода.
Владислав Уровень 16
9 мая 2023
решил задачу за минут 15-20 наверно, потом были косяки с выходом за пределы длины списка, это забрало еще минут 15-20, но финишем оказалось именно превышение 127, где я отдал целый час и пошел сюда .... Спасибо вам!
Yury Rzhata Уровень 18
13 февраля 2022
Перед уходом в армию год назад я повесил в задаче на вызов 10000 методов get значение Long.MAX_VALUE и поехал отправной пункт, недавно приехал, а он до сих пор считает