leetcode:最接近的三数之和---(双指针,排序,数组)

题目:

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

提示:

3 <= nums.length <= 1000

-1000 <= nums[i] <= 1000

-104 <= target <= 104

代码:

java 复制代码
class Solution {
    public int threeSumClosest(int[] nums, int target) {
        
     Arrays.sort(nums);
        int a,b,c;
        int res=Integer.MAX_VALUE;//target<=10000
        int sum=0;
        for(int i=0;i<nums.length;i++){
            //枚举a,//b,c 双指针
            a=i;
            b=i+1;
            c=nums.length-1;
            while(b<c){
                sum=nums[a]+nums[b]+nums[c];
                if(Math.abs(sum-target)<Math.abs(res-target)){
                    res=sum;
                }
                if(sum>target){
                    c--;
                }else if(sum<target){
                    b++;
                }
                else{
                    return target;
                }
                
            }
        }

        return res;
    }
}

运行结果:

相关推荐
暗诺星刻4 分钟前
Java 数学函数库
java·数学·函数·计算器·计算
Shuzi_master75 分钟前
<02.21>八股文
java·开发语言
梅茜Mercy5 分钟前
数据结构:栈和队列详解(下)
数据结构
元亓亓亓6 分钟前
java后端开发day18--学生管理系统
java·开发语言
Tisfy14 分钟前
LeetCode 2209.用地毯覆盖后的最少白色砖块:记忆化搜索之——深度优先搜索(DFS)
算法·leetcode·深度优先·dfs·题解·记忆化搜索·深度优先搜索
Trouvaille ~22 分钟前
【C++篇】树影摇曳,旋转无声:探寻AVL树的平衡之道
数据结构·c++·算法·蓝桥杯·计算机科学·平衡二叉树·avl
LUCIAZZZ24 分钟前
SkyWalking快速入门
java·后端·spring·spring cloud·微服务·springboot·skywalking
虾球xz27 分钟前
游戏引擎学习第116天
java·学习·游戏引擎
陈浩源同学1 小时前
学习 TypeScript 栈和队列数据结构
前端·算法
布谷歌1 小时前
Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)
java·开发语言·分布式·rabbitmq·java-rabbitmq