хеш-функция используется для сопоставления данных со значениями фиксированного размера. Значения, возвращаемые хеш-функцией, называются хэш-значения, хэш-коды, дайджесты или просто хэши. Значения используются для индексации таблицы фиксированного размера, которая называется хэш-таблица. Использование хэш-функции для индексации хеш-таблицы называется хэшированием.

Хеш-функции и связанные с ними хэш-таблицы используются в приложениях для хранения и извлечения данных для доступа к данным за небольшое и почти постоянное время на извлечение, а пространство для хранения лишь незначительно превышает общее пространство, необходимое для самих данных или записей.

Вот 75 лучших вопросов для интервью, которые можно легко решить с помощью Hashing:

  1. Найти пару с заданной суммой в массиве
  2. Проверить, существует ли подмассив с суммой 0
  3. Вывести все подмассивы с суммой 0
  4. Найти самую длинную подпоследовательность, состоящую из последовательных целых чисел
  5. Найти дубликаты в заданном диапазоне k в массиве
  6. Подсчет различных абсолютных значений в отсортированном массиве
  7. Найти подмассив с заданной суммой в заданном массиве целых чисел
  8. Найти наибольший подмассив, образованный последовательными целыми числами
  9. Найти повторяющийся элемент в массиве с ограниченным диапазоном
  10. Найти подмассив максимальной длины, имеющий равное количество нулей и единиц
  11. Найти подмассив максимальной длины по заданной сумме
  12. Найти мажоритарный элемент в массиве (алгоритм голосования Бойера–Мура)
  13. Сортировать массив на основе другого массива
  14. Сортировать элементы по частоте и индексу
  15. Эффективная сортировка массива с большим количеством повторяющихся значений
  16. Рассчитать частоту всех элементов, присутствующих в массиве заданного диапазона, за линейное время и с использованием постоянного пространства
  17. Заменить каждый элемент массива соответствующим ему рангом
  18. Группировать элементы массива по их первому вхождению
  19. Найти все симметричные пары в массиве пар
  20. Построить самый длинный палиндром, перетасовав или удалив символы из строки
  21. Найти количество различных элементов в каждом подмассиве размера k
  22. Вывести все подмассивы массива, имеющие различные элементы
  23. Найти минимальный индекс повторяющегося элемента в массиве
  24. Найти индекс максимального встречающегося элемента с равной вероятностью
  25. Проверить, образован ли массив последовательными целыми числами
  26. Найти в массиве две непересекающиеся пары, имеющие одинаковую сумму
  27. Найти подмассивы с заданной суммой в массиве
  28. Проблема с тремя разделами
  29. Найти два нечетных элемента в массиве без использования лишнего пробела
  30. Найти пары с заданной разностью k в массиве
  31. Найти лишний элемент в массиве за один проход
  32. Определить, равны ли два целых числа без использования операций сравнения и арифметических операций
  33. Задача на 4 суммы | Четверки с заданной суммой
  34. Найти триплет с заданной суммой в массиве
  35. Найти количество превосходящих элементов для каждого элемента массива
  36. Построить бинарное дерево из упорядоченной и ровной последовательности
  37. Построить бинарное дерево из обходов в прямом и обратном порядке
  38. Построить бинарное дерево из прямого и прямого обхода
  39. Клонировать бинарное дерево со случайными указателями
  40. Эффективно вывести все узлы между двумя заданными уровнями в бинарном дереве
  41. Найти прямой обход бинарного дерева по его прямому и обратному порядку
  42. Правая печать бинарного дерева
  43. Найти обратный обход бинарного дерева по его прямому и прямому порядку
  44. Итеративно печатать путь от листа к корню для каждого конечного узла в бинарном дереве
  45. Найти пару с заданной суммой в BST
  46. Найти максимальную ширину заданного бинарного дерева
  47. Построить бинарное дерево из заданного родительского массива
  48. Найти сумму диагоналей заданного бинарного дерева
  49. Печать диагонального обхода бинарного дерева
  50. Выполнить вертикальный обход бинарного дерева
  51. Найти вертикальную сумму в заданном двоичном дереве
  52. Найти предков данного узла в бинарном дереве
  53. Печать вида сверху бинарного дерева
  54. Печать нижнего вида бинарного дерева
  55. Печать левого вида бинарного дерева
  56. Вывести все узлы идеального бинарного дерева в определенном порядке
  57. Обход двоичного дерева в обратном порядке
  58. Спиральный обход бинарного дерева
  59. Уровневый обход бинарного дерева
  60. Построить бинарное дерево из матрицы предков
  61. Найти вероятность того, что человек выживет, сделав N шагов по острову
  62. Узлы связи представлены на каждом уровне бинарного дерева в виде связанного списка
  63. Преобразовать бинарное дерево в двусвязный список по спирали
  64. Удалить дубликаты из связанного списка за один проход
  65. Обнаружение цикла в связанном списке (алгоритм обнаружения цикла Флойда)
  66. Клонирование связанного списка со случайными указателями
  67. Найти все общие элементы, присутствующие в каждой строке данной матрицы
  68. Создать список возможных слов из матрицы символов
  69. Найти общие элементы, присутствующие во всех строках матрицы
  70. Найти повторяющиеся строки в двоичной матрице
  71. Найти все слова из данного списка, которые следуют тому же порядку символов, что и заданный шаблон
  72. Найти все возможные комбинации, заменив заданные цифры символами из соответствующего списка
  73. Изоморфные струны
  74. Определить, являются ли две строки анаграммой или нет
  75. Проверить, есть ли в строке повторяющаяся подпоследовательность