На самом деле есть место и тому и другому и третьему варианту) тут зависит от конкретной задачи. Но я не знаю кейса, где понадобится такая оптимизация, что нужно менять объякты и добавлять туда указатели, вместо использования linked list
на тех же собеседованиях спрашивают когда linked list лучше, чем array list - обычно ничего вменяемого придумать не удаётся
надо было мне это объяснить на видео. проблема массивов в том, что когда место заканчивается, тебе надо создать новый массив большего размера, скопировать туда все элементы старого массива и добавить новый элемент уже в новый массив, когда как linked list может расширяться сколько угодно и по одному элементу.
а вот реально применять связный список мне пока не приходилось)
А что если элементов действительно много? миллионы элементов, каждый элемент содержит большое количество данных?) лучше за один проход решить, если такая возможность есть) и быстро и памяти потребляет мало
Это тоже хороший и полезный способ, но все зависит от самой задачи, если достаточно односвязного списка без доп. данных, то нет смысла добавлять доп. данные, а если для задачи полезно держать какие-то данные в узлах, то делаем так)
В первую очередь подбираю задачи, так чтобы объяснить какую-то тему, которая будет полезна на интервью, на примере этой задачи или саму задачу, которая часто встречается на интервью. У меня на канале идут подряд задачи связанные с какой-то темой(two pointers, sliding window), сейчас перешел на тему fast and slow pointer и на примере этой задачи объяснил, что это такое + объяснил что такое связный список и какие они бывают(на видео).
Мне вот давали Reverse Linked List(фаанг в РФ) и десятки других задач(easy/medium/hard).
К сожалению, есть такое, весь спектр ощутил после первой статьи https://habr.com/ru/articles/786184/ Но в то же время бывают и полезные комментарии, поэтому натягиваем броню и вперед)
ну да, если задача заключается в просто нахождении середины, то это неоптимальный вариант хранения данных
тоже не припоминаю) ни в том, ни в другмо виде
На самом деле есть место и тому и другому и третьему варианту) тут зависит от конкретной задачи.
Но я не знаю кейса, где понадобится такая оптимизация, что нужно менять объякты и добавлять туда указатели, вместо использования linked list
а, решал эту задачу и планирую тоже сделать видео по нему)
ну значение ноды будет ССЫЛКА на нужный объект, поэтому не вижу в этом проблем) ну или плохо понял идею
что-то звучит сложно и извращено)
не понял про кольцевой список
ну это как-то не очень, лучше создать LinkedList, чтобы код был чище)
не понял этот момент, что имеется в виду?
согласен, в случае с быстрым и медленным указателем, проходим каждый элемент 1.5 раз, но в рамках одного цикла
Лучше не опишешь, добавлю это в комментарии к видео и оставлю ссылку на источник)
Согласен, что третий вариант довольно хитрий и да, второй вариант проще в понимании
Самый оптимальный вариант третий) а две другие лишь подводят к третьему
надо было мне это объяснить на видео.
проблема массивов в том, что когда место заканчивается, тебе надо создать новый массив большего размера, скопировать туда все элементы старого массива и добавить новый элемент уже в новый массив, когда как linked list может расширяться сколько угодно и по одному элементу.
а вот реально применять связный список мне пока не приходилось)
А что если элементов действительно много? миллионы элементов, каждый элемент содержит большое количество данных?)
лучше за один проход решить, если такая возможность есть) и быстро и памяти потребляет мало
Это тоже хороший и полезный способ, но все зависит от самой задачи, если достаточно односвязного списка без доп. данных, то нет смысла добавлять доп. данные, а если для задачи полезно держать какие-то данные в узлах, то делаем так)
В первую очередь подбираю задачи, так чтобы объяснить какую-то тему, которая будет полезна на интервью, на примере этой задачи или саму задачу, которая часто встречается на интервью.
У меня на канале идут подряд задачи связанные с какой-то темой(two pointers, sliding window), сейчас перешел на тему fast and slow pointer и на примере этой задачи объяснил, что это такое + объяснил что такое связный список и какие они бывают(на видео).
Мне вот давали Reverse Linked List(фаанг в РФ) и десятки других задач(easy/medium/hard).
К сожалению, есть такое, весь спектр ощутил после первой статьи https://habr.com/ru/articles/786184/
Но в то же время бывают и полезные комментарии, поэтому натягиваем броню и вперед)
Да, можно и желательно решать так) на видео я как раз предложил зрителям попробовать решить более оптимальным способ
Это medium задача https://leetcode.com/problems/longest-substring-without-repeating-characters , которую дают в десятки разных компаний, включая FAANG)