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

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

  • std::set, std::map, std::unordered_set, std::unordered_map in C++
  • HashMap, HashSet, TreeMap в Java
  • Dictionary, Set в Python
  1. Найти пару с заданной суммой в массиве
  2. Проверить, существует ли подмассив с нулевой суммой
  3. Вывести все подмассивы с нулевой суммой
  4. Найти подмассив максимальной длины с заданной суммой
  5. Найти подмассив максимальной длины, в котором равное количество нулей и единиц
  6. Найти самый большой подмассив, образованный последовательными целыми числами
  7. Найти элемент большинства (алгоритм голосования большинством Бойера – Мура)
  8. Найти подмассив с заданной суммой в целочисленном массиве
  9. Найти тройку с заданной суммой в массиве
  10. Найти длину самой длинной непрерывной последовательности с одинаковой суммой в заданных двоичных массивах
  11. Найти пары с разницей` k` в массиве
  12. Задача с 4 суммой | Четверки с заданной суммой
  13. Группировать элементы массива по первому вхождению
  14. Найти все симметричные пары в массиве пар
  15. Найти количество различных элементов в каждом подмассиве размера` k`
  16. Вывести все подмассивы массива, содержащие отдельные элементы
  17. Найти минимальный индекс повторяющегося элемента в массиве
  18. Найти индекс максимального встречающегося элемента с равной вероятностью
  19. Проверить, образован ли массив последовательными целыми числами
  20. Найти две неперекрывающиеся пары, имеющие одинаковую сумму в массиве
  21. Подсчитать различные абсолютные значения в отсортированном массиве
  22. Найти подмассивы с заданной суммой в массиве
  23. Эффективно рассчитать частоту всех элементов, присутствующих в массиве с ограниченным диапазоном
  24. Перемешать массив согласно заданному порядку элементов
  25. Найти дубликаты в диапазоне` k` в массиве
  26. Найти самую длинную подпоследовательность, состоящую из следующих друг за другом целых чисел
  27. Определить, можно ли разбить массив на пары с суммой, кратной` k`
  28. Сортировать элементы по частоте и индексу
  29. Сортировать массив в порядке, определенном другим массивом
  30. Эффективно отсортируйте массив с множеством повторяющихся значений
  31. Найти количество превосходящих для каждого элемента массива
  32. Найти все общие элементы, присутствующие в каждой строке матрицы
  33. Найти общие элементы, присутствующие во всех строках матрицы
  34. Проверить, присутствует ли в строке повторяющаяся подпоследовательность
  35. Определить, являются ли две строки анаграммой или нет
  36. Изоморфные струны
  37. Найти все возможные комбинации, заменив заданные цифры на символы из соответствующего списка
  38. Найти все слова из данного списка, которые следуют в том же порядке символов, что и заданный образец
  39. Группировать анаграммы из списка слов
  40. Найти минимум операций, необходимых для преобразования строки в другую
  41. Найти самую длинную подстроку строки, содержащей` k` различных символов
  42. Найти все палиндромные перестановки строки
  43. Найти все подстроки строки, являющиеся перестановкой другой строки
  44. Построить самый длинный палиндром путем перемешивания или удаления символов из строки
  45. Найти первый неповторяющийся символ в строке, сделав только один обход
  46. Найти все подстроки, содержащие ровно` k` различных символов
  47. Определить, соответствует ли строка заданному шаблону
  48. Найти нечетно встречающийся элемент в массиве за один обход
  49. Найти два нечетно встречающихся элемента в массиве, не используя лишнего места
  50. Найти повторяющийся элемент в массиве с ограниченным диапазоном
  51. Найти два повторяющихся элемента в массиве с ограниченным диапазоном (с помощью XOR)
  52. Распечатать вид двоичного дерева снизу
  53. Распечатать вид двоичного дерева сверху
  54. Найти предков данного узла в двоичном дереве
  55. Найти диагональную сумму двоичного дерева
  56. Итеративно распечатать путь от листа к корню для каждого листового узла в двоичном дереве
  57. Построить бинарное дерево из родительского массива
  58. Построить бинарное дерево из обхода по порядку и по предзаказу
  59. Построить двоичное дерево из обходов inorder и postorder
  60. Построить двоичное дерево по порядку и порядку уровней
  61. Построить полное двоичное дерево из последовательности предпорядка и поступорядочения
  62. Найти обход двоичного дерева по порядку и по порядку следования двоичного дерева
  63. Найти предварительный обход двоичного дерева по его порядку и послепорядку
  64. Клонировать двоичное дерево со случайными указателями
  65. Построить бинарное дерево из матрицы предков
  66. Найти пару с заданной суммой в BST
  67. Найти частоту каждого элемента в отсортированном массиве, содержащем дубликаты
  68. Найти пары с разностью` k` в массиве | Постоянное космическое решение
  69. 3 – проблема раздела
  70. Найти вероятность того, что человек останется жив после того, как совершит n шагов по острову
  71. Найти всех сотрудников, которые прямо или косвенно подчиняются руководителю
  72. Найти правильный порядок алфавитов в данном словаре древнего происхождения
  73. Задача раскраски графа
  74. Найти маршрут из приведенного списка аэропортов вылета и прилета
  75. Найти первые` k` неповторяющихся символов в строке за один проход
  76. Заменить каждый элемент массива на его соответствующий ранг
  77. Определить цикл в связанном списке (алгоритм определения цикла Флойда)
  78. Удалить дубликаты из связанного списка за один проход
  79. Клонировать связанный список со случайными указателями
  80. Узлы ссылок присутствуют на каждом уровне двоичного дерева в виде связанного списка
  81. Найти точку пересечения двух связанных списков
  82. Найдите вертикальную сумму двоичного дерева
  83. Найдите числа в виде суммы двух кубиков для двух разных пар
  84. Определить, равны ли два целых числа без использования операторов сравнения и арифметических операций
  85. Эффективно распечатайте все узлы между двумя заданными уровнями в двоичном дереве
  86. Обход бинарного дерева в порядке уровней
  87. Обход бинарного дерева по спирали
  88. Обратный обход бинарного дерева по порядку уровней
  89. Вывести все узлы идеального двоичного дерева в определенном порядке
  90. Распечатать левое изображение двоичного дерева
  91. Печать диагонального обхода двоичного дерева
  92. Преобразование двоичного дерева в двусвязный список по спирали
  93. Выполнить вертикальный обход бинарного дерева
  94. Вычислить максимальное количество узлов на любом уровне в двоичном дереве
  95. Распечатать правое изображение двоичного дерева
  96. Реализация Trie с эффективным использованием памяти в C ++ - вставка, поиск и удаление
  97. Найти повторяющиеся строки в двоичной матрице
  98. Сгенерируйте список возможных слов из символьной матрицы

Спасибо за чтение.