Description: Find two numbers such that they add up to a specific target number.
Code:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
left = 0
right = len(numbers) - 1
while left < right:
curr = numbers[left] + numbers[right]
if curr == target:
return [left+1, right+1]
if curr > target:
right -=1
else:
left += 1
return False
Efficiency:
Time Complexity: O(n)
Space Complexity: O(1)
Test:
numbers = [2,7,11,15]
target = 9
print(twoSum(numbers, target)) #[1,2]
numbers = [2,3,4]
target = 6
print(twoSum(numbers, target)) #[1,3]
numbers = [-1,0]
target = -1
print(twoSum(numbers, target)) #[1,2]