请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

实现一个函数,给定一个数组和一个目标值,找出数组中三个数的和等于目标值,并返回这三个数的下标

实现一个函数,给定一个数组和一个目标值,找出数组中三个数的和等于目标值,并返回这三个数的下标
变成三个的话 我不会啦 老师讲的是双指针 三个数的话 怎么办呢 我没做出来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)

正在回答 回答被采纳积分+3

1回答

双越 2023-07-31 20:53:33

三个数当然就不一样了。

双指针对应的就是两个数。如此推导,三个数就得用三指针,那时间复杂度就指数增长了。

可以再继续脑洞一下,找出数组中 10000 个数的和是 n ,那太难了…

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信