实现一个函数,给定一个数组和一个目标值,找出数组中三个数的和等于目标值,并返回这三个数的下标
变成三个的话 我不会啦 老师讲的是双指针 三个数的话 怎么办呢 我没做出来function targetFn (arr){
arr = arr.sort((a,b) => a - b)
let res =[]
for(let i=0; i<arr.length; i++){
if (arr[i] > 0) break
if (i > 0 && arr[i -1] ===arr[i]) continue
for (let j=i+1;k =arr.length -1;j<k){
const sum =arr[i]+arr[j]+arr[k]
if (sum >0){
k–
} else if (sum < 0) {
j++
} else {
// zhaodao
res.push(arr[i],arr[j],arr[k])
while(j<k && arr[j] === arr[j+1]) j++
while(j<k && arr[k] === arr[k-1]) k–
j++
k–
}
}
}
return res
}
targetFn (arr)