16. 最接近的三数之和

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

题目描述

给你一个数组nums,和目标值target。从nums选出3个数,使这3个数的和最接近target,返回这三个数的和。


解题思路

本题和3数之和一样(但这个可以不用去重)。固定一个数,然后双指针找其他两个数。


在遍历的过程中,找到最接近target的3元组。


如何移动两个指针呢?——看具体的代码实现。

代码

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        sort(nums.begin(),nums.end());
        int n=nums.size();
        int ret=0;
        //差值
        int dif=INT_MAX;
        for(int i=0;i<n;i++)
        {
            int l=i+1,r=n-1;
            while(l<r)
            {
                //更新和,差值
                int sum=nums[l]+nums[r]+nums[i];
                int d=sum-target;
                if(abs(d)<dif)
                {
                    ret=sum;
                    dif=abs(d);
                }

                //如何移动
                if(d>0) r--;
                else if(d<0) l++;
                else return target;
            }
        }
        return ret;
    }
};
相关文章
|
JavaScript 小程序
小程序的数据驱动和vue的双向绑定有何异同?
小程序的数据驱动和vue的双向绑定有何异同?
243 1
|
机器学习/深度学习 人工智能 算法
概率论01:你真的分得清频率、概率、几率和似然吗?
概率论01:你真的分得清频率、概率、几率和似然吗?
1111 0
概率论01:你真的分得清频率、概率、几率和似然吗?
|
弹性计算 前端开发 小程序
Student:T9M1 sean
在第一次使用时,平台还提供了教程,只需要用心花点时间完成其中的场景实践和技能自测就可以啦。并且每一步都有很详细的教程,包括如何体验ECS云服务器的新手场景以及了解其中的概念和基础操作。对于我这种之前没使用过云服务器的人来说真的非常友好。
人工智能 缓存 前端开发
9974 48
人工智能 JavaScript 开发工具
4048 12
开发工具 Swift git
1570 2
人工智能 Java BI
1001 1
人工智能 JavaScript 测试技术
1423 2
缓存 JavaScript Shell
1843 3