LeetCode 16 最接近的三数之和 - 双指针逼近

LeetCode 16 最接近的三数之和,和三数之和框架一样,只是从"等于 target"变成"最接近 target"。


🟡 最接近的三数之和

找三个数使和最接近 target。[-1,2,1,-4], target=1 → 2(-1+2+1=2)


和第 15 题三数之和几乎一样:排序→固定一个数→双指针。区别是找到一个和之后不返回------因为可能还有更接近的。每次算和三数之和跟 target 的差值,记录最小差值对应的和。

java 复制代码
public int threeSumClosest(int[] nums, int target) {
    Arrays.sort(nums);
    int res = nums[0] + nums[1] + nums[2];  // 初始值

    for (int i = 0; i < nums.length - 2; i++) {
        int left = i + 1, right = nums.length - 1;
        while (left < right) {
            int sum = nums[i] + nums[left] + nums[right];
            if (Math.abs(sum - target) < Math.abs(res - target)) res = sum;
            if (sum < target) left++;
            else if (sum > target) right--;
            else return sum;  // 差 0,不可能更接近了
        }
    }
    return res;
}

和第 15 题比少了去重------不是找所有解,是找最近的一个,重复值不影响。也不用跳过 i 的重复。唯一的新东西是维护"最接近"的逻辑,绝对值差值更小就更新。


更多干货,欢迎访问我的算法笔记网站 codelu.cc,有兴趣的话可以去看看~

这道题你踩过什么坑?或者你用别的语言实现过吗?评论区聊聊,回头复习也方便翻。

相关推荐
土司大王23 分钟前
LeetCode hot100——33.搜索旋转排序数组:Java 二分模板与 O(log n) 实现
数据结构·算法·leetcode
不穿鞋的懒羊羊24 分钟前
STL容器
算法
huang57914731 分钟前
多线程环境下的共享数据结构安全问题分析4
算法
地平线开发者1 小时前
模型部署|征程6 量化路线怎么选:PTQ 还是 QAT?
神经网络·算法·机器学习
辰辉创聚1 小时前
禽流感病毒分子基础:表面抗原与内部转录复合体的功能解析
ide·leetcode·rabbitmq·重组血凝素蛋白·甲型流感病毒核蛋白·禽流感单抗
不会就选b1 小时前
算法日常・每日刷题--<贪心>12
算法
小羊没烦恼!2 小时前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
ysu_03143 小时前
08-二叉树遍历:四种方式详解
c语言·数据结构·算法·leetcode
咸鱼老弟3 小时前
Speculative Decoding(投机采样):大模型"先猜后验",生成速度翻倍
前端·算法·ai编程
荆棘鸟智能3 小时前
AI算法持续学习与迭代怎么做?从数据闭环到灰度发布的MLOps工程实践
人工智能·算法·架构·边缘计算