leetcode_16最接近的三数之和

2020-06-24  本文已影响0人  看到这朵小fa了么

思路:通过一次遍历,对每个元素,再进行双指针遍历查找,当三数之和小则左指针右移,大则右指针左移,否则直接返回

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var threeSumClosest = function(nums, target) {
    
    let list = nums.sort((a,b)=>a-b)
    let result = list[0]+list[1]+list[2]
    for(let i=0; i<list.length; i++){
        let end = list.length-1
        let start = i+1
        let focus = list[i]
        while(start<end){
            let sum = focus+list[end]+list[start]
            if(Math.abs(sum-target) < Math.abs(result-target)){
               result = sum
            }
            if(sum>target) {
                end--
            } else if(sum<target){
                start++
            } else {
                return result
            }
        }
    }
    return result
};
上一篇 下一篇

猜你喜欢

热点阅读