Найти в Дзене
Коллизии в хеш-таблицах
Коллизии в хеш-таблицах 🤩 Коллизия возникает, когда два разных ключа попадают в один и тот же индекс массива. Например, при размере таблицы 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 месяцев назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала