167. 两数之和 II - 输入有序数组
给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
分析: 这道题比较简单,和之前的三数之和完全一个思路,也是双指针做法,且不需要再手动排序,因为是递增数组。
代码:
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}
}```