Легкий

Проблема

Предположим, Энди и Дорис хотят выбрать ресторан для ужина, и у них обоих есть список любимых ресторанов, представленный строками.

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

Пример 1:

Input:
["Shogun", "Tapioca Express", "Burger King", "KFC"]
["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"]
Output: ["Shogun"]
Explanation: The only restaurant they both like is "Shogun".

Пример 2:

Input:
["Shogun", "Tapioca Express", "Burger King", "KFC"]
["KFC", "Shogun", "Burger King"]
Output: ["Shogun"]
Explanation: The restaurant they both like and have the least index sum is "Shogun" with index sum 1 (0+1).

Примечание.

  1. Длина обоих списков будет в диапазоне [1, 1000].
  2. Длина строк в обоих списках будет в диапазоне [1, 30].
  3. Индекс начинается с 0 до длины списка минус 1.
  4. Нет дубликатов в обоих списках.

Решение

Используйте хэш-карту для хранения индексов ресторанов в list1 и повторите list2, чтобы получить тот, у которого сумма индексов наименьшая.

Сложность

Предположим, что m и n обозначают количество ресторанов list1 и list2. Для построения хеш-карты требуется время O(m). И тогда в среднем/худшем случае требуется время O(n)/O(nlogm) для итерации list2 и проверки наличия элементов в list1. Следовательно, его временная сложность составляет O(m + n)/O(m + nlogm) в среднем/наихудшем случае.

Требуется O(m) дополнительного пространства для поддержки хеш-карты.