力扣 16.最接近的三数之和

文章目录

题目介绍

解法

设 s=numsi+numsj+numsk,为了判断 s 是不是与 target 最近的数,我们还需要用一个变量 minDiff 维护 ∣s−target∣ 的最小值。分类讨论:

  1. 如果 s=target,那么答案就是 s,直接返回 s。

  2. 如果 s>target,那么如果 s−target<minDiff,说明找到了一个与 target 更近的数,更新 minDiff 为 s−target,更新答案为 s。然后和三数之和一样,把 k 减一。

  3. 否则 s<target,那么如果 target−s<minDiff,说明找到了一个与 target 更近的数,更新 minDiff 为 target−s,更新答案为 s。然后和三数之和一样,把 j 加一。

代码如下:

java 复制代码
class Solution {
    public int threeSumClosest(int[] nums, int target) {
        Arrays.sort(nums);
        int minDiff  = Integer.MAX_VALUE;//三数之和与target之差最小值(正数)
        int ans = 0; //最后返回的三数之和
        int n = nums.length;
        for (int i = 0; i < n - 2; i++) {
            int x = nums[i];
            if (i > 0 && x == nums[i - 1]) continue; // 跳过重复数字
            int l = i + 1;
            int r = n - 1;
            while (l < r) {
                int sum = x + nums[l] + nums[r]; //三个数之和
                if (sum > target) {
                    if (sum - target < minDiff ) { // s 与 target 更近
                        minDiff  = sum - target;
                        ans = sum;
                    }
                    r--;
                } else if (sum < target) {
                    if (target - sum < minDiff ) { // s 与 target 更近
                        minDiff  = target - sum;
                        ans = sum;
                    }
                    l++;
                } else {
                    return sum;
                } 
            }
    
        }
        return ans;
    }
}
相关推荐
毕竟是shy哥1 小时前
计算YOLO数据集中每个类的目标数
算法·yolo·机器学习
M78佐菲1 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
学长毕业设计2 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西2 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西2 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
圣保罗的大教堂2 小时前
leetcode 1406. 石子游戏 III 困难
leetcode
许彰午2 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065252 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_2 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
晊晌_h3 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法