awesome-everything EN
↑ Обратно к восхождению

Алгоритмы с нуля

Массивы и строки: тест с выбором ответа

Суть Синтез юнита «Массивы и строки» в формате выбора: цена непрерывности, two pointers, sliding window, prefix sum, запись in-place и ловушка конкатенации строк.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 13 min

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

Цель

Убедись, что связываешь модель стоимости непрерывного массива с приёмами поверх неё — two pointers, sliding window, prefix sum, запись in-place и строки-как-массивы — и узнаёшь предусловие, которое каждый из них тихо предполагает.

Викторина

Профайлер показывает горячий цикл, который на каждый запрос вставляет по индексу 0 в массив из 1M элементов. Почему это узкое место и какой правильный фикс?

Викторина

Ты применяешь two pointers с концов (two-sum) для поиска пары с заданной суммой, но он пропускает пары, которые ты видишь глазами. Самая вероятная причина?

Викторина

Для «наименьший подмассив с суммой ≥ target» на положительных целых вариативное окно (sliding window) работает за O(n), хотя внутри есть вложенный while. Почему это не O(n²)?

Викторина

Сервис отвечает на тысячи запросов суммы на диапазоне по логу фиксированной длины. Сейчас каждый запрос проходит диапазон. Когда предвычисление prefix sum — правильный выбор и чего оно стоит?

Викторина

Ревьюер отмечает, что твой in-place «удалить все нули» через write-указатель мутирует массив вызывающего, ломая последующее чтение оригинала. Как правильно сформулировать компромисс?

Викторина

Функция собирает большой CSV через result += line внутри цикла по n строкам и неожиданно медленна на масштабе. Что происходит и какой фикс?

Итог

Сквозная линия юнита — одна модель стоимости и приёмы, что её используют. Непрерывность даёт O(1) индексацию, но O(n) сдвиги, поэтому вставка в начало/середину — ловушка, а append дёшев. Two pointers превращают вложенный перебор пар в один проход — но two-sum с концов требует отсортированного входа. Sliding window — O(n), потому что указатели идут только вперёд. Prefix sum меняет O(n) памяти на O(1) запросы по диапазону на статичных данных. Запись in-place покупает O(1) памяти ценой оригинала. А строки — это массивы с одним укусом: неизменяемость делает конкатенацию в цикле O(n²) — складывай в массив и join.

Продолжить восхождение ↑Массивы и строки: свободное припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.