码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 3Sum Closest

时间:2019-02-27 20:27:45      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:pre   public   lse   .so   ati   targe   get   solution   arrays   

题意很明确,就取数列中每一个点,然后取数列两端边缘与选定点求和,如果比target大就舍弃最右边点,因为有它在和选定点加起来不可能更接近target了。同理比target小就舍弃最左边的店

import static java.lang.StrictMath.abs;
import java.util.Arrays;
class Solution {
    public int threeSumClosest(int[] nums, int target) {
        int len = nums.length,sum = 0;
        if(len <= 3){
            for(int i = 0;i < len;i++) sum += nums[i];
            return sum;
        }
        sum = nums[0] + nums[1] + nums[2];
        Arrays.sort(nums);
        for(int i = 0;i < len;i++){
            if(i >= 1 && (nums[i] == nums[i-1])) continue;
            int gap2 = abs(target - sum);
            int l = i + 1,r = len - 1;
            while(l < r){
                if(gap2 > abs(target - nums[i] - nums[l] - nums[r])){
                    sum = nums[i] + nums[l] + nums[r];
                    gap2 = abs(target - sum);
                    if(sum == target) return sum;
                }
                if(target > nums[i] + nums[l] + nums[r]) l++;
                else r--;
            }
        }
        return sum;
    }
}

 

LeetCode 3Sum Closest

标签:pre   public   lse   .so   ati   targe   get   solution   arrays   

原文地址:https://www.cnblogs.com/shimu/p/10446393.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!