当前位置: 首页 > news >正文

最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。

返回这三个数的和。

假定每组输入只存在恰好一个解。

示例 1:

输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。

示例 2:

输入:nums = [0,0,0], target = 1
输出:0
解释:与 target 最接近的和是 0(0 + 0 + 0 = 0)。

提示:

  • 3 <= nums.length <= 1000
  • -1000 <= nums[i] <= 1000
  • -104 <= target <= 104

解题思路: 

  1. 初始化最接近值

    • 初始设为前三个数的和(nums[0] + nums[1] + nums[2]),作为基准。

  2. 三重循环枚举所有组合

    • 第一层循环(i):固定第一个数 nums[i]

    • 第二层循环(j):在 i 之后固定第二个数 nums[j]

    • 第三层循环(k):在 j 之后遍历第三个数 nums[k],计算三数之和 sum

  3. 动态更新最接近值

    • 如果 sum == target,直接返回(已找到最优解)。

    • 否则,比较 sum 与 target 的绝对差,更新最接近值 closest

  4. 返回结果

    • 遍历完成后,closest 即为最接近 target 的三数之和。

 代码:

#include <stdlib.h> // 用于 abs()
int threeSumClosest(int* nums, int numsSize, int target) {
    if (numsSize < 3)
    return 0;
    int closest = nums[0] + nums[1] + nums[2]; // 初始值
    for (int i = 0; i < numsSize - 2; i++) {
        for (int j = i + 1; j < numsSize - 1; j++) {
            for (int k = j + 1; k < numsSize; k++) {
                int sum = nums[i] + nums[j] + nums[k];
                // 如果等于 target,直接返回(最优解)
                if (sum == target) {
                    return sum;
                }
                // 更新最接近的值
                if (abs(sum - target) < abs(closest - target)) {
                    closest = sum;
                }
            }
        }
    }
    return closest;
}

运行结果:

相关文章:

  • Xss复现
  • Elasticsearch 之 ElasticsearchRestTemplate 聚合查询
  • 2025年CNG 汽车加气站操作工题目分享
  • 用否定干掉无效流量:DeepBI如何精准提升亚马逊广告效果
  • JDK版本与Class版本的对应关系对照表
  • 121买卖股票的最佳时机解题记录
  • 数据不互通、审批慢?如何实现多系统智能协同
  • Java实现 自主学习一套身份证识别(识别营业执照信息和语音识别接口)
  • DeepSeek集成:如何将DeepSeek修炼成‘国殇剑舞‘
  • 数据库后续
  • python实现登录页面图形验证码
  • Pydantic字段元数据指南:从基础到企业级文档增强
  • 【软考备考】系统架构设计论文完整范文示例
  • iOS自定义collection view的page size(width/height)分页效果
  • 横扫SQL面试——事件流处理(峰值统计)问题
  • 8.3MW屋顶光伏+光储协同:上海汽车变速器低碳工厂的能源革命-安科瑞黄安南
  • 飞桨PP系列新成员PP-DocLayout开源,版面检测加速大模型数据构建,超百页文档图像一秒搞定
  • 解决 “Cannot read SQL script from class path resource [sql/XX.sql]“ 错误
  • 每日总结3.28
  • 卷积神经网络 - 转置卷积
  • 王毅同丹麦外交大臣会谈,表示在格陵兰问题充分尊重丹麦主权和领土完整
  • 俄乌直接谈判勉强收场,特朗普再次“电话外交”能否有用?|907编辑部
  • A股午后回暖,三大股指涨跌互现:港口板块重新走强,两市成交近1.1万亿元
  • 宫崎骏的折返点
  • 一周观展|一批重量级考古博物馆开馆:从凌家滩看到孙吴大墓
  • 玉林一河段出现十年最大洪水,一村民被冲走遇难