最接近的三数之和

链接

16. 最接近的三数之和 - 力扣(LeetCode)

思路

  1. 利用两数之和的思想,题目提到答案只有唯一的一个,那么我们可以知道------遇到相等的直接返回,然后就是需要明确一点------会出现一样的元素,我们要保证这个元素唯一性

  2. 确定要第一个数字,剩下俩个数字进行两数之和,也需要明确跳出重复元素,并且不断缩小范围。

代码

javascript 复制代码
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var threeSumClosest = function (nums, target) {
    nums.sort((a, b) => a - b);
    let res = Number.MAX_SAFE_INTEGER, n = nums.length;

    // 排序后使用set去重
    for (let i = 0; i < nums.length; i++) {
        if (i > 0 && nums[i] === nums[i - 1]) {
            continue;
        }
        let j = i + 1, k = n - 1

        while (j < k) {
            let sum = nums[i] + nums[j] + nums[k]
            if (sum === target) return target

            if (Math.abs(sum - target) < Math.abs(res - target)) {
                res = sum
            }

            if (sum > target) {
                let k0 = k - 1
                while (j < k0 && nums[k0] == nums[k]) --k0
                k = k0
            }
            else {
                let j0 = j + 1
                while (j0 < k && nums[j0] == nums[j]) ++j0
                j = j0
            }
        }
    }

    return res;
};
相关推荐
alphaTao16 小时前
LeetCode 每日一题 2026/10/19-2026/10/25
算法·leetcode
木头科技16 小时前
【AI 工程化第十六篇】Spring AI 多模态 RAG 实战:图片、扫描件、表格与图文证据链
java·人工智能·spring
驭渊的小故事16 小时前
从 JVM 底层看泛型:泛型擦除、Signature 属性与 Super Type Token 模式
java·开发语言·jvm
菜鸟小杰子16 小时前
手动修改 Spring Boot 嵌套 JAR 包:大包小包隔离打包实战
java·jar
计算机编程-吉哥16 小时前
计算机毕业设计 基于 SpringBoot + Vue 的剧本杀系统 Java毕业设计【任务书、开题报告、中期报告、论文、源码】
java·vue.js·spring boot·毕业设计·课程设计·计算机毕业设计选题
code2cat16 小时前
【随笔】RAG语义缓存:问题很相似,答案就能直接复用吗
java·缓存·知识库·rag
爱吃火鸡面呀17 小时前
Doris 数据划分实战:List 分区、分桶列与桶数选择
数据结构·list
Rain的Java大神之路17 小时前
面了 50 个候选人,90% 都挂在 LeetCode 3 无重复字符的最长子串:滑动窗口的 5 个致命坑
java·后端·leetcode
西凉的悲伤17 小时前
Jsoup 库 HTML 解析详解
java·前端·html·jsoup
十碗饭吃不饱17 小时前
Apache POI 踩坑:setFontFamily 二次设置字体不生效、样式残留问题深度解析
java·word·apache