16. 最接近的三数之和

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

16. 3Sum Closest


基本解法

class Solution
{
public:
    int threeSumClosest(vector<int> &nums, int target)
    {
        int N = nums.size();
        int s = 10000;
        sort(nums.begin(), nums.end());
        for (int first = 0; first < N - 2; first++)
        {
            int second = first + 1;
            int third = N - 1;
            while (second < third)
            {
                int tmps = nums[first] + nums[second] + nums[third];
                s = abs(target - tmps) < abs(target - s) ? tmps : s;
                if (tmps > target)
                {
                    third--;
                }
                else if (tmps < target)
                {
                    second++;
                }
                else
                {
                    return target;
                }
            }
        }
        return s;
    }
};


和15题解法类似。

目录
相关文章
|
7月前
|
算法 程序员
【算法训练-二分查找 四】【模拟二分】X的平方根
【算法训练-二分查找 四】【模拟二分】X的平方根
42 0
|
4月前
|
算法
LeetCode第16题最接近的三数之和
该文章介绍了 LeetCode 第 16 题最接近的三数之和的解法,与第 15 题类似,通过双指针法减少循环次数,根据差值的绝对值来更新最接近的和,并总结了双指针可减少循环次数的要点。
|
6月前
16. 最接近的三数之和
16. 最接近的三数之和
|
7月前
|
算法 测试技术 C#
【折半处理 二分查找】1755. 最接近目标值的子序列和
【折半处理 二分查找】1755. 最接近目标值的子序列和
【折半处理 二分查找】1755. 最接近目标值的子序列和
|
7月前
16.最接近的三数之和
16.最接近的三数之和
33 0
|
7月前
|
人工智能 算法
前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)
前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)
|
7月前
|
算法 C++ 索引
寻找最接近子数组和的算法设计及其C++实现
寻找最接近子数组和的算法设计及其C++实现
42 4
|
7月前
|
搜索推荐
【hoare优化版】快速排序算法 | 三数取中&小区间优化(2)
【hoare优化版】快速排序算法 | 三数取中&小区间优化(2)
82 0
|
7月前
leetcode-16:最接近的三数之和
leetcode-16:最接近的三数之和
50 0
|
机器学习/深度学习 算法 测试技术
C++二分算法: 找出第 K 小的数对距离
C++二分算法: 找出第 K 小的数对距离