【LeetCode】167. 两数之和 II - 输入有序数组
描述
给定一个下标从 1 开始的整数数组numbers
,该数组已按非递减顺序排列,请从数组中找出满足相加之和等于目标数target
的两个数。如果这两个数分别是numbers[index1]
和numbers[index2]
,返回整数数组[index1, index2]
。
只存在唯一答案,而且不可以重复使用相同的元素,必须只使用常量级的额外空间。
Python
1. 对撞指针
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
# 初始化指针
i, j = 0, len(numbers)-1
# 指针对撞
while i<j:
if numbers[i]+numbers[j]>target:
j -= 1
elif numbers[i]+numbers[j]<target:
i += 1
else: # 返回下标对
return [i+1, j+1]