1. 题目

2. 分析

就是简单的双指针的题,使用头尾指针分别指向数组的首尾,然后依次判断两者值的和与target的大小关系。关系分成三类:
(1)和大于target,说明尾指针过大,需要前移;
(2)和小于target,说明首指针过小,需要后移;
(3)和等于target,满足条件,返回结果

3. 代码

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:
                return [i+1, j+1]
            else:
                i += 1