最接近的三数之和

链接

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;
};
相关推荐
编程(变成)小辣鸡23 分钟前
Spring事务失效场景
java·后端·spring
运行时记录1 小时前
prompt-optimizer skill
算法
万法若空1 小时前
【数据结构-哈希表】哈希表原理
数据结构·算法·散列表
极客先躯1 小时前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
退休倒计时1 小时前
【每日一题】LeetCode 437. 路径总和 III TypeScript
算法·leetcode·typescript
学逆向的1 小时前
汇编——内存
开发语言·汇编·算法·网络安全
tachibana22 小时前
hot100 翻转二叉树(226)
java·数据结构·算法·leetcode
brave_zhao2 小时前
nginx的进程架构
java·学习·nginx
兰令水2 小时前
leecodecode【面试150】【2026.7.9打卡-java版本】
java·数据结构·leetcode·面试·职场和发展
禾高网络2 小时前
互联网医院|AI 互联网医院成品开发系统
java·大数据·人工智能·小程序