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

最接近的三数之和

给你一个长度为 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;
}

运行结果:


http://www.kler.cn/a/613188.html

相关文章:

  • CORDIC算法:三角函数的硬件加速革命——从数学原理到FPGA实现的超高效计算方案
  • 2.1-WAF\CDN\OSS\反向代理\负载均衡
  • 自动驾驶中基于潜在世界模型学习多概率决策(LatentDriver)
  • 《2核2G阿里云神操作!Ubuntu+Ollama低成本部署Deepseek模型实战》
  • 51c嵌入式~三极管~合集1
  • 剑指Offer49 -- DP_贪心
  • Meatachat:演示版(AI组件库、Chat、智能对话、移动适配)(附源码)
  • mybatis里in关键字拼接id问题
  • Jmeter-负载测试
  • 算法基础——模拟
  • 如何选择适合的实验室铸铁地板和铸铁试验平板?北重专业帮助指南
  • OpenHarmony子系统开发 - 显示管理
  • 软件工程面试题(七)
  • 爬虫的第三天——爬动态网页
  • ruoyi-vue部署 linux 系统项目安装部署 oa 项目部署 (合集)
  • docker torcherve打包mar包并部署模型
  • Java 代理(一) 静态代理
  • 第二届计算机网络和云计算国际会议(CNCC 2025)
  • Reactor/Epoll为什么可以高性能?
  • 代码随想录动态规划05