【LeetCode笔记】167. 两数之和 II - 输入有序数组

90 阅读1分钟

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

给定一个已按照 非递减顺序排列  的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

分析: 这道题比较简单,和之前的三数之和完全一个思路,也是双指针做法,且不需要再手动排序,因为是递增数组。

代码:

image.png

func twoSum(numbers []int, target int) []int {
    pl := 0
    pr := len(numbers) - 1 
    for pl < pr {
        if (numbers[pl] + numbers[pr]) == target {
            return []int {pl+1,pr+1}
        } else if (numbers[pl] + numbers[pr] < target) {
            pl++
        } else {
            pr--
        }
    }
    return []int{-1,-1}
}```