167. Two Sum II - Input array is sorted
Easy
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
Note:
- Your returned answers (both index1 and index2) are not zero-based.
- You may assume that each input would have exactly one solution and you may not use the same element twice.
Example:
Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
笔记:
首尾两个数相加,因为是有序的,所以当两个数的和小于target的时候,首部的数向后移一位,继续比较;如果大于target了,尾部的数字向前移一位,继续比较,直到发现结果。
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
p1, p2 = 0, len(numbers) - 1
while p1 < p2:
sum = numbers[p1] + numbers[p2]
if sum == target:
return [p1 + 1, p2 + 1]
elif sum < target:
p1 += 1
else:
p2 -= 1