Найти в Дзене
Коллизии в хеш-таблицах
Коллизии в хеш-таблицах 🤩 Коллизия возникает, когда два разных ключа попадают в один и тот же индекс массива. Например, при размере таблицы 10: 5 % 10 = 5 и 15 % 10 = 5 → оба ключа попадают в одну ячейку. Чтобы это решать, используют два подхода: цепочки и открытую адресацию. 1️⃣В методе цепочек каждая ячейка хранит список элементов. Если по индексу уже есть данные — новый ключ добавляется в связанный список. Это просто в реализации и не сильно зависит от заполненности таблицы, но требует дополнительной памяти и при большом числе коллизий списки могут становиться длинными...
5 месяцев назад
АБАСТРАЦИЯ ИЛИ ИНТЕРФЕЙСЫ
АБАСТРАЦИЯ ИЛИ ИНТЕРФЕЙСЫ 🍿 Многие слышали такие слова, как «абстракция» и «интерфейс», но не всегда понимают, зачем они нужны и как работают на практике. Давай разберёмся простыми словами. Абстракция — это когда мы скрываем сложную реализацию и показываем пользователю только то, что действительно важно. Представь двигатель автомобиля: тебе не нужно знать, как именно он устроен внутри, чтобы просто нажать кнопку «Start» и поехать. В программировании то же самое: можно спрятать сложные детали и оставить только понятный внешний способ взаимодействия. class Engine: def start(self): raise NotImplementedError("Это...
5 месяцев назад
😎 ЯНДЕКССОБЕС: превращаем числа в читаемые диапазоны
😎 ЯНДЕКССОБЕС: превращаем числа в читаемые диапазоны! Дан список целых чисел без повторений. Нужно преобразовать его в строку, свернув последовательные по числовому ряду значения в диапазоны (a-b), а одиночные числа оставить как есть. Например, у вас есть список: [0, 1, 2, 4, 5, 7, 8] И хочется превратить его в: "0-2,4-5,7-8" Вместо десятков чисел — всего пара аккуратных диапазонов! Идеально для отображения строк, страниц, ID или логов. Вот сам код: def group_ranges(nums): if not nums: return "" result = [] start = end = nums[0] for num in nums[1:]: if num == end + 1: end = num else: result...
7 месяцев назад
😎 ЯНДЕКССОБЕС: Минимальное расстояние между X и Y
😎 ЯНДЕКССОБЕС: Минимальное расстояние между X и Y На собеседовании мне дали простую, но коварную задачу: Дана строка, содержащая только символы X, Y и O. Нужно найти кратчайшее расстояние между X и Y. Если один из символов отсутствует — вернуть 0. Примеры: "XY" -> 1 "YOX" -> 2 "OOOXOOYOXOXO" -> 2 "YY" -> 0 "XX" -> 0 🤔 На первый взгляд задача кажется тривиальной — просто найти X и Y. Но опытный разработчик сразу задаст себе несколько умных вопросов: 1. А если X и Y встречаются несколько раз? 2...
7 месяцев назад
😃 Backspace в строках: как эмулировать поведение текстового редактора
😃 Backspace в строках: как эмулировать поведение текстового редактора? Представьте, что вы набираете текст, но каждый символ # — это Backspace. А теперь представьте, что у вас две такие строки. Нужно узнать, будут ли они одинаковыми, если их напечатать в редакторе. s = "ab#c" → "ac" t = "ad#c" → "ac" Результат: True ✅ 😎 Решение через стек (stack) 1. Мы просто проходим по строке и: 2. Добавляем символ в стек, если это обычная буква...
8 месяцев назад
Ты когда-нибудь использовал декораторы? Или они до сих пор кажутся чем-то магическим? 🧐
Опрос
8 месяцев назад
🌴 Прокачай свои алгоритмы: зеркалим бинарное дерево
🌴 Прокачай свои алгоритмы: зеркалим бинарное дерево! Сегодня разберём короткий, но мощный алгоритм — инверсия бинарного дерева. Всего несколько строк кода — и ты превращаешь дерево в его зеркальное отражение. Вот как: class Solution: def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: if not root: return None temp = root.left root.left = root.right root.right = temp self.invertTree(root.left) self.invertTree(root.right) return root 🤡 Что делает этот код? Он рекурсивно меняет местами левое и правое поддеревья для каждого узла дерева...
8 месяцев назад
Где тебе было бы интереснее посмотреть реализацию паттерна Backend-for-Frontend? 🥰
Опрос
8 месяцев назад
**Где тебе было бы интереснее посмотреть реализацию паттерна Backend-for-Frontend?** 🥰
Опрос
8 месяцев назад
👍 Зачем нужен Backend-for-Frontend
👍 Зачем нужен Backend-for-Frontend? Представьте, что у вас один ресторан на весь город. Всем нужно разное — кто-то заказывает бургер, кто-то веганский боул, кто-то детское меню. А повар готовит всем одно и то же. 🥲 Так работает типичный монолитный API: один универсальный бэкенд, который должен угодить всем клиентам — и вебу, и мобилке, и даже смарт-часам. Результат — громоздкий фронт, тонна ненужных данных и головная боль при каждой новой фиче. Паттерн BFF (Backend-for-Frontend) — как создать отдельного «повара» для каждого «стола»...
8 месяцев назад
🧩 Как найти путь из лабиринта с помощью Python
🧩 Как найти путь из лабиринта с помощью Python? Представь себе лабиринт, в котором нужно дойти от точки S (Start) до точки E (End), обходя стены #. Звучит как игра, но на деле — это задача поиска пути в графе. Вот такой лабиринт: S..#... ##.#... ....... .#..... ..#.... ..#.... ..#.... E##.... 📌 Решаем с помощью алгоритма поиска в ширину (BFS). Он подходит, если нам нужен самый короткий путь. Код короткий, но мощный: он находит путь шаг за шагом, отмечает посещённые клетки и возвращает маршрут...
8 месяцев назад
Как ты думаешь, какой алгоритм помогает найти кратчайший путь в лабиринте? ✅
Опрос
8 месяцев назад