Проверяет понимание асимптотической нотации Big O, её видов и применения для оценки сложности алгоритмов.
Big O — это способ описания того, как быстро растёт время выполнения или потребление памяти алгоритма при увеличении размера входных данных. Вместо точных измерений (которые зависят от железа и языка) мы смотрим на асимптотическое поведение — что происходит при стремлении размера к бесконечности. Это помогает абстрагироваться от деталей и сравнивать алгоритмы по сути.
Big O используется при проектировании алгоритмов и на собеседованиях для оценки решений. Например, если нужно найти дубликат в массиве, наивный подход с двумя циклами даст O(n^2), а использование хеш-таблицы — O(n). Выбор правильной сложности критичен для больших данных.
// Пример: поиск дубликата
// O(n^2) — вложенные циклы
function hasDuplicate(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) return true;
}
}
return false;
}
// O(n) — с использованием Set
function hasDuplicateFast(arr) {
const seen = new Set();
for (let item of arr) {
if (seen.has(item)) return true;
seen.add(item);
}
return false;
}Big O — это универсальный язык для обсуждения эффективности алгоритмов. Его стоит применять всегда, когда нужно выбрать между несколькими подходами, особенно при работе с большими объёмами данных, чтобы избежать неожиданных замедлений.
Уровень
Рейтинг:
5
Сложность:
3
Навыки
JavaScript
Math
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию