找出数组中三个元素之和为目标值的数
let arr = [-10,2,3,4,5,10,6,7,8]
arr = arr.sort() //从小到大排序 -10,2,3,4,5,6,7,8,10
let num = [] // 创建一个空数组
target = 15;
function fn(arr) {
for(let i=0; i< arr.length; i++){
let value = target - arr[i]
let j = arr.length-1
for(let k=0; k< arr.length; k++){
// 因为是升序排列的数组,如果一开始就小于arr[k],那么后面也一定小于数组中的值,和就一定不会等于目标值
if(value < arr[k]) break;
if(arr[k] + arr[j] < value) k++;
else if(arr[k] + arr[j] > value) j--;
else num.push(arr[i],arr[k],arr[j]);
}
}
}
fn(arr)
alert(num)