Easy
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to 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 = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6
Output: [0,1]
Constraints:
2 <= nums.length <= 104-109 <= nums[i] <= 109-109 <= target <= 109Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity?
Here are the steps to solve the Two Sum problem:
nums using a loop.nums[i], calculate its complement (i.e., target - nums[i]).[dictionary[complement], i].from typing import List
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
# Create a dictionary to store elements and their indices
num_dict = {}
# Iterate through the array
for i in range(len(nums)):
# Check complement
complement = target - nums[i]
# Check if complement exists in the dictionary
if complement in num_dict:
# Return the indices if complement is found
return [num_dict[complement], i]
# Add the current element and its index to the dictionary
num_dict[nums[i]] = i
# If no solution is found
return None
# Example Usage:
solution = Solution()
nums1 = [2, 7, 11, 15]
target1 = 9
print(solution.twoSum(nums1, target1)) # Output: [0, 1]
nums2 = [3, 2, 4]
target2 = 6
print(solution.twoSum(nums2, target2)) # Output: [1, 2]
nums3 = [3, 3]
target3 = 6
print(solution.twoSum(nums3, target3)) # Output: [0, 1]
The time complexity of this algorithm is O(n), where n is the number of elements in the array. The dictionary lookup operation is constant time.