最接近的三数之和

链接

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;
};
相关推荐
Omics Pro5 分钟前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言
JAVA社区5 分钟前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
voidmort13 分钟前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法
金銀銅鐵13 分钟前
[Java] 如何理解 class 文件中方法的 descriptor?
java·后端
云烟成雨TD32 分钟前
Spring AI Alibaba 1.x 系列【63】AI Agent 长期记忆
java·人工智能·spring
憧憬成为java架构高手的小白42 分钟前
苍穹外卖--day09
java·spring boot·百度
学代码的真由酱1 小时前
Java多用户一对一网页聊天室-测试报告
java·开发语言·功能测试·测试
人道领域1 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法
2401_868534781 小时前
【无标题】
数据结构·r语言
Jasonakeke1 小时前
SpringBoot自动配置原理揭秘
java·spring boot·后端