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

来源:2-20 找出一个数组中和为 n 的两个数-双指针的代码演示

unbreakable_全栈

2023-07-31

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

写回答

1回答

双越

2023-07-31

三个数当然就不一样了。

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

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

0
2
双越
回复
unbreakable_全栈
这从哪里看到的面试题?
2023-08-01
共2条回复

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1509 学习 · 642 问题

查看课程