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;
    }
};
相关文章
|
8月前
16. 最接近的三数之和
16. 最接近的三数之和
|
9月前
16.最接近的三数之和
16.最接近的三数之和
43 0
|
存储
LeetCode 16.最接近的三数之和
LeetCode 16.最接近的三数之和
84 0
|
9月前
leetcode-16:最接近的三数之和
leetcode-16:最接近的三数之和
69 0
|
算法 安全 Swift
LeetCode - #16 最接近的三数之和
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
6月前
|
算法
LeetCode第16题最接近的三数之和
该文章介绍了 LeetCode 第 16 题最接近的三数之和的解法,与第 15 题类似,通过双指针法减少循环次数,根据差值的绝对值来更新最接近的和,并总结了双指针可减少循环次数的要点。
leetcode:16.最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
72 0
|
算法 C++ Python
每日算法系列【LeetCode 16】最接近的三数之和
每日算法系列【LeetCode 16】最接近的三数之和
|
存储 算法 Python
【力扣算法01】之最接近的三数之和
【力扣算法01】之最接近的三数之和
95 0
|
算法 前端开发
力扣-最接近三数之和 中等 🌍
力扣-最接近三数之和 中等 🌍
135 0
力扣-最接近三数之和 中等 🌍

热门文章

最新文章