Задачи на измерение производительности списков
Комментарии (548)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей Кирсанов
2 февраля, 21:07
Чтобы последняя решалась в 10 простых строчек, надо взять цикл по листу, а внутри него еще один цикл, который проверяет следующие элементы. Если следующий элемент такой же - увеличиваем переменную самой длинной последовательности. Если следующий элемент другой - продолжаем внешний цикл с того места, докуда дошли во внутреннем.
Решение здесь, если кто захочет разобраться (не подглядывайте заранее!): https://pastebin.com/dFFXbVVp
0
Larandvik
14 февраля 2023, 19:43
С последней задачей возился часа 3, создал 2 лист, кучу условий... Валидатор не пустил, сказал, что слишком сложно)) Правильно говорят "Делай только то, что от тебя просят"
Маленькая подсказка для таких как я :
Сравнивать можно и нужно только 2 последовательности чисел, иначе можно пропускать и следующую сравнивать с той что была больше в прошлый раз.
+2
Anton Podoynikov
15 января 2023, 08:28
Отличная вещь дебаггер.
+4
Alex Pa
26 июля 2022, 11:43
у меня не было лекции по Linked list.
0
Иван
11 сентября 2022, 05:56
у меня была лекция по Linked list.
+4
Byte Boss
5 марта 2023, 11:08
И у меня была 😎
0
k
13 мая 2023, 11:44
у меня была лекция по Linked list.
0
Artur Abubakirov
3 апреля, 14:01
у меня тоже была)
0
Александр
3 июня 2022, 12:57
Я вот не понимаю почему не пропускает числа бальше 127 если сравнивать не через equals, а вот так
list.get(i)==list.get(i-1), может кто объяснить ?
+2
YesOn
1 августа 2022, 22:29
Скорее всего потому что i типа int.
0
Евгений
15 августа 2022, 18:27
Так тип int гораздо шире 127 чисел. Я тоже не понимаю, почему не работает этот вариант.
0
Dmitrii
22 октября 2022, 17:00
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 и сравнивать уже их . но это больше кода.
+13
Владислав
9 мая 2023, 14:55
решил задачу за минут 15-20 наверно, потом были косяки с выходом за пределы длины списка, это забрало еще минут 15-20, но финишем оказалось именно превышение 127, где я отдал целый час и пошел сюда .... Спасибо вам!
+1
Yury Rzhata
13 февраля 2022, 13:06
Перед уходом в армию год назад я повесил в задаче на вызов 10000 методов get значение Long.MAX_VALUE и поехал отправной пункт, недавно приехал, а он до сих пор считает
+19
Gennady Raster
15 января 2022, 10:30
Задача на самую длинную последовательность, не принимает мой валидный (и идентичный правильному решению) код...
+3
Elenois
10 ноября 2021, 17:44
Последняя задача --- темный лес. Я самый тупой человек на планете😩
+3
Bator
14 ноября 2021, 15:34
надо сравнить i элемент с i+1;
если равны то кол-во совпадений увеличивается на 1;
потом нужны условия для выбора максимального количества совпадений.
+1
Евгений N
10 апреля 2022, 07:13
мне гораздо проще было сделать по-другому:
первое значение положил в "текущее", count в 1,countМакс в 1.
далее цикл со 2-го значения по последнее:
если "текущее" == i-му, то count++; countМакс=max(countМакс,count);
иначе "текущее" = i-му, count в 1.
пс лайфхак: т.к. я из коллекции брал не сразу, а через промежуточную переменную типа int, то избежал проблем со сравнением Integer (обошелся без equals)
+2
SWK
3 ноября 2021, 07:37
Осталось понять, зачем List.
0
Konstantin
16 сентября 2021, 15:10
Не понял почему задача "Самая длинная последовательность" имеет уровень Medium - ей как минимум Hard нужен. Если сравнивать с предыдущими Medium-ами.
0
Yakov Bashkurov
22 сентября 2021, 16:16
она и есть хардовая.
0
IndependentFM
28 сентября 2021, 14:31
не сказал бы, что она прям сложная, но минут сорок пришлось потратить на "вынашивание" идеи реализации обнуления счетчика
+1