167.两数之和 II - 输入有序数组
给定一个已按照*升序排列* 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 < index2。
- 返回的下标值(index1 和 index2)从1开始
- 可以假设每个输入只对应唯一的答案,不可以重复使用相同的元素。
class Solution: # 左右双指针
def twoSum(self, numbers: List[int], target: int) -> List[int]:
start, end = 0, len(numbers) - 1 # 左指针指向最小元素,右指针指向最大元素
while start < end: # 从两头往中间扫描
s = numbers[start] + numbers[end]
if s > target:
end -= 1
elif s < target:
start += 1
else: # 下标从1开始
return start + 1, end + 1