16. 【中等】最接近的三数之和

16. 最接近的三数之和


链接

题目描述

在这里插入图片描述

排序+双指针

思路

在这里插入图片描述

代码

class Solution {
    public int threeSumClosest(int[] nums, int target) {
        if(nums == null || nums.length < 3){
            return 0;
        }
        Arrays.sort(nums);
        int nearestDis = Integer.MAX_VALUE;
        int res = 0;
        for(int i = 0; i < nums.length-2 ;i++){
            int l = i+1;
            int r = nums.length-1;
            
            while(l < r){
                int sum = nums[i] + nums[l] + nums[r];
                if(sum == target){
                    return target;
                }else if(sum > target){
                    if(Math.abs(sum-target) < nearestDis){
                        nearestDis = Math.abs(sum-target);
                        res = sum;
                    }
                    r--;
                }else{
                    if(Math.abs(sum-target) < nearestDis){
                        nearestDis = Math.abs(sum-target);
                        res = sum;
                    }
                    l++;
                }
            }
        }
        return res;
    }
}
发布了55 篇原创文章 · 获赞 1 · 访问量 886

猜你喜欢

转载自blog.csdn.net/weixin_42469108/article/details/103599875
今日推荐