Hammerhall Сколько стоит Войти

Алгоритмы

Серия об алгоритмах, которые решают на стримах: как сравнивать коллекции, искать пары, мерить сходство. Каждая статья показывает цену решения — сколько операций оно делает и как их число растёт, когда данных вдвое больше.

Stream API здесь уже знаком — его объясняет рубрика «Стримы». Сквозной пример — месяц заказов кофейни «Наковальня»; пример каждой статьи запускается одним файлом на Java 25. Это теория к слою mind кузницы Stream Forge.

Опубликовано 6 из 6

«Сравнить коллекции» 1–6

Что общего, что одинаковое, кто на кого похож — и почему перебор всех пар не взлетает.

  1. 1Множества как алгебра: пересечение, разность, подмножество

    Пересечение, объединение, разность и подмножество на месяце кофейни: зачем копия перед retainAll и почему contains у списка стоит n·m.

    читать минут 20

  2. 2Множество как ключ карты: самые популярные комбо

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

    читать минут 20

  3. 3Пары «все со всеми»: почему n² не взлетает

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

    читать минут 20

  4. 4Пары внутри записи и обратный индекс

    Пары внутри заказа, ключ пары без порядка, обратный индекс «позиция → гости» и блокинг: когда они экономят работу, а когда нет.

    читать минут 20

  5. 5Сходство множеств: коэффициент Жаккара

    Коэффициент Жаккара: почему доля общего честнее числа общих, что делать с пустыми наборами и NaN, как печатать double и взвешивать по штукам.

    читать минут 20

  6. 6Векторы: косинус, расстояние, ближайшие соседи

    Гость как вектор из двенадцати чисел: косинус против расстояния, z-оценка для признаков разного масштаба и пять ближайших соседей одного новичка.

    читать минут 20

Попробовать руками

В кузницах Hammerhall — задачи по Java, которые проверяет сервер: решаешь в своей IDE, отправляешь одной командой, проверка запускает твои тесты и закрытые. Сложность растёт вместе с решённым, первые задачи бесплатны.