1、代码
<!--为了使函数功能更加强大,我的实现不仅提供了数组下标组,还提供了数组元素组-->
function f(arr, target) {
const a = arr.slice().sort((a, b) => a - b);
const len = a.length;
const key = [];
const val = [];
if (len <= 1) return;
let i = 0;
let j = len - 1;
while (i < j) {
if (a[i] + a[j] < target) {
i++
} else if (a[i] + a[j] > target) {
j--
} else {
val.push([a[i], a[j]])
key.push([i, j])
i++; j--;
}
}
return {
key, val
}
}
function findNum2(arr, target) {
const len = arr.length;
const key = [];
const val = [];
if (len <= 1) return;
for (let i = 0; i < len; i++) {
const diff = target - arr[i];
const index = arr.slice(i + 1).findIndex(i => i === diff);
if (index !== -1) {
key.push([i,index]);
val.push([arr[i],arr[index]]);
}
}
return {
key, val
}
}
const arr = [2, 9, 3, 10, 8, 1, 22];
const target = 11;
console.log(f(arr, target))
console.log(g(arr, target))
复制代码
2、效果图