Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: time complexity, nested loops, big O, arrays

Какая сложность у двух вложенных циклов по разным массивам?

Вопрос проверяет понимание временной сложности алгоритмов при анализе вложенных циклов, работающих с разными массивами.

Короткий ответ

Если два вложенных цикла проходят по разным массивам, то общая сложность равна O(n * m), где n — длина первого массива, m — второго. Это не квадратичная сложность O(n²), так как массивы разные. Такой подход часто встречается при поиске пересечений или сравнении элементов двух коллекций.

Длинный ответ

Временная сложность двух вложенных циклов по разным массивам

Когда у нас есть два вложенных цикла, каждый из которых проходит по своему массиву, общая временная сложность вычисляется как произведение длин этих массивов. Если первый массив имеет размер n, а второй — m, то сложность составит O(n * m). Это важно отличать от случая, когда оба цикла проходят по одному и тому же массиву — тогда сложность была бы O(n²).

Пример на JavaScript

const arr1 = [1, 2, 3]; // n = 3
const arr2 = ['a', 'b']; // m = 2

for (let i = 0; i < arr1.length; i++) {
  for (let j = 0; j < arr2.length; j++) {
    console.log(arr1[i], arr2[j]);
  }
}
// Вывод: 1 a, 1 b, 2 a, 2 b, 3 a, 3 b — всего 6 операций (3 * 2)

В данном примере выполняется 6 итераций, что соответствует O(3 * 2). Если бы массивы были одинакового размера, то сложность стала бы O(n²), но здесь она линейно зависит от обоих размеров.

Где применяется

  • Поиск пересечений двух списков без использования хеш-таблиц.
  • Сравнение каждого элемента одного массива с каждым элементом другого.
  • Генерация декартова произведения двух множеств.

Вывод: Используйте O(n * m) для оценки производительности, когда вложенные циклы работают с разными массивами. Это не квадратичная сложность, но всё равно может быть неэффективной при больших размерах данных — в таких случаях стоит рассмотреть оптимизацию через хеш-таблицы или сортировку.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#time complexity

#nested loops

#big O

#arrays

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.