leetcode167.两数之和 II - 输入有序数组

115 阅读1分钟

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