SprintCode.pro

Подготовка к алгоритмическим задачам

Super

Two Sum

Description: Given an array of integers nums and a target value target, return the indices of two numbers in the array whose sum equals target. You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [3,4,5,6], target = 7
Output: [0,1]
Explanation: nums[0] + nums[1] = 3 + 4 = 7

Example 2:

Input: nums = [4,5,6], target = 10
Output: [0,2]
Explanation: nums[0] + nums[2] = 4 + 6 = 10

Constraints:

2 <= nums.length <= 10⁴

-10⁹ <= nums[i] <= 10⁹

-10⁹ <= target <= 10⁹

Only one valid answer exists

Recommended time and space complexity

You should aim for a solution with O(n) time complexity and O(n) space complexity, where n is the length of the nums array.


Hint 1

A brute force approach would be to use two nested loops to check all possible pairs of numbers. This would give O(n²) time complexity. Can you think of a more efficient solution?


Hint 2

For each number x, you are looking for another number y such that x + y = target. In other words, you are looking for complement = target - x. How can you quickly check if the complement exists in the array?


Hint 3

A hash table allows for O(1) lookups. You can store each visited number and its index in a hash table. For the current number, check if the complement exists in the table.

This problem tests skills in working with arrays and hash tables. It helps develop understanding of algorithm optimization, space-time tradeoffs, and efficient searching in arrays. Solving this problem improves skills in working with indices, hashing, and basic data structures.

Expected Input :

[3,4,5,6], 7

Expected Output

[0,1]