Давайте рассмотрим двухнедельный учебный план LeetCode по борьбе с DS. Часть 3.

Проблема

Учитывая массив целых чисел nums и целое число target, верните индексы двух чисел так, чтобы в сумме они составляли target.

Вы можете предположить, что каждый вход будет иметь ровно одно решение, и вы не можете использовать один и тот же элемент дважды.

Вы можете вернуть ответ в любом порядке.

Пример 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Пример 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Пример 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Ограничения:

  • 2 <= nums.length <= 104
  • 109 <= nums[i] <= 109
  • 109 <= target <= 109
  • Существует только один правильный ответ.

Решение

Это простая задача с массивами.

  1. создать хэш.
  2. перебрать все числа в массиве.
  3. пусть val будет числом в i.
  4. установите хэш в val равным i.
  5. выход из петли.
  6. снова перебрать все числа в массиве.
  7. пусть potentialKey будет суммой target, вычтенной из num в точке i.
  8. если хеш в potentialKey присутствует и не является самим собой, вернуть i и хеш в potentialKey.

Код

Удачного кодирования!