Обновить

Комментарии 14

То, что вы описали в статье, с трудом можно назвать паттернами. Паттерны это концепции, типичные наборы приёмов, алгоритмов, структур данных.

В статье же вы описываете всего лишь пару алгоритмов обхода массива и классические, широко используемые структуры данных.

Это важно и полезно, но все же сомневаюсь что это стоит называть паттернами.

Я использую термин «паттерны» скорее в прикладном, учебном контексте, как типовые подходы к решению задач (two pointers, hashmap и т.д.), которые помогают быстрее распознавать решения на практике. Но и не назвать их Паттернами не могу.

При этом в вашем комментарии есть небольшое противоречие: сначала вы пишете, что паттерны - это типичные наборы приемов, алгоритмов и структур данных, а затем отмечаете, что я описываю как раз алгоритмы и структуры данных.

Для начинающих это удобный способ структурировать мышление перед переходом к более сложным алгоритмам и концепциям.

Не хочу Вас расстроить, но банальные структуры данных и абстрактное знание о том, что массив можно обходить двумя указателями сразу вряд ли поможет вам проходить 60% собеседований. Рынок нынче сильно суровее, и даже на джуна нужно больше знаний...

Да, согласен, сейчас требования выросли. Но базовые паттерны и структуры данных - это фундамент, который многие как раз пропускают на старте, именно поэтому стоит Простая сложность

вряд ли поможет вам проходить 60% собеседований

Прочитал ваш комментарий и первая мысль была что 60% собеседований конечно нет, а вот 60% задач на алгоритмических собеседованиях вполне возможно. Часть лёгкой и средней секции эти методы покроют.

А потом увидел что и автор говорит про 60% задач.

Заголовок изменили) Когда написан был комментарий - в заголовке было так, как в нем написано

на джуна нужно больше знаний...

А разве сейчас джуны не вайбкодят? По-моему, вайбкодер, который умеет решить задачку со скобочками, может смело устраиваться продуктовым инженером.

На собесах не слышал, чтобы кому-либо разрешали вайбкодить)

Очень понятная статья, она помогает не просто решать задачи, а начать распознавать их типы через паттерны. Вместо хаотичных попыток сразу становится ясно, с чего начинать и какой подход использовать (Two Pointers, HashMap, Stack), что сильно ускоряет решение и снижает количество ошибок.

Согласен

К паттернам не какого отношения эта статья не имеет.

я не волшебник я только учусь... но позвольте спросить зачем такое длинное решение если комбинация filter() и indexOf() в 2х строчках кода даст все повоторяющиеся элементы, вычитаем из из оригинального array и получаем все уникальные

зачем такое длинное решение если комбинация

Чтобы не задаваться подобными вопросами, например.

Потому что ваша комбинация filter и indexOf - это квадратичный алгоритм на ровном месте. Там где достаточно линейного. Если у вас массив хотя бы на 1000 элементов у вас уже заметное время будет работать код, который может отработать мгновенно.

Конечно, если ваш язык уже имеет какой-то встроенный unique(), то используейте его. Но если нет и у вас там больше 10 элементов, то лучше писать руками нормальные алгоритмы. Если хотите более фнукциональный и кроткий код, то вам нужен filter с аккумулятором, куда вы будете передавать предыдущий элемент и проходить фильтр только если текущий от предыдущего отличается. Или сначала запихайте массив в map и используйте его вместо IndexOf. Правда тут все-равно может остаться проблема с лишней аллокацией памяти.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации