16. 最接近的三数之和

简介: 16. 最接近的三数之和

找到三数之和与target最接近,返回这三个数的和。假设答案唯一。

分析:与15.三数之和类似https://pigeon.blog.csdn.net/article/details/115711407,

同样采用 排序+双指针 方法。

    public int threeSumClosest(int[] nums, int target) {
        int ans = nums[0]+nums[1]+nums[2];
        int closest = Math.abs( ans - target);
        Arrays.sort(nums);
        int n  = nums.length;
        //枚举a
        for (int first = 0; first < n; first++) {
            //twoSum
            int third = n-1;
            for (int second = first+1; second < n; second++) {
               while (second < third && (nums[first]+nums[second]+nums[third] - target)>0 ){
                   third--;
               }
               if (second == third) {
                   if (second+1<n && Math.abs(nums[first]+nums[second]+nums[second+1]-target)<closest ) {
                       ans = nums[first]+nums[second]+nums[second+1];
                       closest = Math.abs(ans-target);
                   }
               }
               else  {
                   if (Math.abs(nums[first]+nums[second]+nums[third]-target)<closest) {
                        ans = nums[first] + nums[second] + nums[third];
                        closest = Math.abs(ans-target);
                       }
                   if (third+1<n && Math.abs(nums[first]+nums[second]+nums[third+1]-target)<closest) {
                         ans = nums[first] + nums[second] + nums[third+1];
                         closest = Math.abs(ans-target);
                       }
                   }
            }
 
        }
        return ans;
 
    }
目录
打赏
0
0
0
0
48
分享
相关文章
|
10月前
16.最接近的三数之和
16.最接近的三数之和
44 0
|
10月前
16. 最接近的三数之和
16. 最接近的三数之和
47 1
LeetCode第16题最接近的三数之和
该文章介绍了 LeetCode 第 16 题最接近的三数之和的解法,与第 15 题类似,通过双指针法减少循环次数,根据差值的绝对值来更新最接近的和,并总结了双指针可减少循环次数的要点。
|
10月前
leetcode-16:最接近的三数之和
leetcode-16:最接近的三数之和
73 0
每日算法系列【LeetCode 16】最接近的三数之和
每日算法系列【LeetCode 16】最接近的三数之和
LeetCode 16.最接近的三数之和
LeetCode 16.最接近的三数之和
85 0
leetcode:16.最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
74 0
LeetCode - #16 最接近的三数之和
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
LeetCode: 16. 最接近的三数之和 | 双指针专题
【LeetCode: 16. 最接近的三数之和 | 双指针专题 】
69 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等