Давайте рассмотрим двухнедельный учебный план 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
- Существует только один правильный ответ.
Решение
Это простая задача с массивами.
- создать хэш.
- перебрать все числа в массиве.
- пусть val будет числом в i.
- установите хэш в val равным i.
- выход из петли.
- снова перебрать все числа в массиве.
- пусть potentialKey будет суммой target, вычтенной из num в точке i.
- если хеш в potentialKey присутствует и не является самим собой, вернуть i и хеш в potentialKey.
Код
Удачного кодирования!