# 题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
思路:排序和双指针
1.先对数组进行升序排序,然后从左到右找到一个基础点i,然后设置两个指针,左指针:l=i+1,右指针:r=num.length-1,然后求得这三个和,判断一下和如果大于target,有指针左移,如果小于target,左指针右移,在这个过程中,不断地更新min,和此时记录下来的和res,最后return res就可以了
var threeSumClosest = function(nums, target) {
let res
if(nums.length<=3){
res=getNum(nums)
}
nums.sort((a,b)=>a-b)
let min=Infinity
for(let i=0;i<nums.length;i++){
let l=i+1
let r=nums.length-1
while(l<r){
let num=nums[i]+nums[l]+nums[r]
let dift=Math.abs(num-target)
if(dift<min){
min=dift
res=num
}
if(num>target){
r--
}else if(num<target){
l++
}else{
return res
}
}
}
return res
}
function getNum(num){
num.reduce((pre,now)=>{
return pre+now
},0)
}