Проверить, является ли arr2 подмножеством. Входной сигнал: arr1[] = {11, 1, 13, 21, 3, 7}, arr2[] = {11, 3, 7, 1}
Выход: arr2[]
является подмножеством arr1[]
Подмножество массива с использованием хеширования
Если мы используем линейное зондирование. Hashtable будет выглядеть так: {0=7, 1=1, 2=13, 3=21, 4=3, 5=11}
где первый элемент является индексом (хешированный код) вторым значением Если вы видите для элемента 7. Хэш-код - 7%6=1
. Поэтому из 1 он должен пройти полную хэш-таблицу, проверив каждое ведро. Здесь Сложность времени - O (n)
Позже мы будем искать все элементы в arr2
с hashtable.
Таким образом, общая временная сложность будет равна Len (arr2) * O (n).
В чем преимущество хэширования?
Как вы можете сказать, общая сложность как O (1). Лен (arr2) будет N. Он должен пройти полный массив. –
Я знаю материал, который вы упомянули. Но сделайте сухой пробег для этого случая. вам нужно будет пройти полную хеш-таблицу и вернуться к 0. Таким образом, O (n) является сложностью. Итак, общая сложность: O (M * N) –
Хорошо, мы можем представить Len (1) как n и Len (2) как m, чем в наилучшей общей сложности будет O (m), в лучшем случае это будет O (mn), но амортизированная сложность будет меньше O (mn). Это случай, если вы не будете использовать хеш-таблицу, это будет O (mn) –