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]