方法1 - 双指针 解法(数组已排序) 时间复杂度O(n)
function towSum(array, target) {
let resultArr = [];
let i = 0;
let j = array.length - 1;
while (i < j) {
let sum = array[i] + array[j];
if (sum < target) {
i++;
}else if (sum > target) {
j--;
}else {
resultArr.push([i++,j--]);
}
}
return resultArr;
}
方法2 - map+差值 解法(数组未排序) 时间复杂度O(n)
function towSum(array, target) {
let resultArr = [];
let map = new Map();
for (let i = 0; i < array.length; i++) {
let diff = target - array[i];
if (map.get(diff) !== undefined) {
resultArr.push([map.get(diff), i]);
}else {
map.set(array[i], i);
}
}
return resultArr;
}