两数之和2
有序数组版两数之和题目的双指针解法与实现示例
#type / howto
#status / evergreen
#resource / algorithm
#algo / two-pointers
#source / leetcode
#topic / leetcode100
[!info] related notes
两数之和2
function twoSum(numbers: number[], target: number): number[] {
let left = 0;
let right = numbers.length - 1;
while (left < right) {
const sum = numbers[left] + numbers[right];
if (sum === target) {
return [left, right];
}
// 利用数组有序的特性:
// 如果和太大,收缩右边界;如果和太小,增加左边界。
sum > target ? right-- : left++;
}
return []; // 题目保证有解,但加上兜底是个好习惯
}