最接近的三数之和

链接

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;
};
相关推荐
benbenAItalk3 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
sunshine22 girl3 小时前
Java学习二 基本语法2, 算术运算符
java·学习
2601_962218614 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
niucloud-admin4 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885724 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
吞下星星的少年·-·4 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
滕州市燕猫虎计算机科技工作室个体工商户4 小时前
Java锁
java·开发语言
stolentime5 小时前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
shehuiyuelaiyuehao6 小时前
1计算机是如何工作的
java·计算机网络
和裕6 小时前
蜂窝板 vs 七层瓦楞重型纸箱:大件工业设备运输性能与成本全对比
大数据·运维·网络·人工智能·算法