Leetcode 中等:16. 最接近的三数之和

力扣题目(16):最接近的三数之和 qsort 是C标准库(stdlib.h)中提供的一个用于对数组进行排序的函数。它的名字是 "quick sort" 的缩写,但实际上它并不一定使用快速排序算法,具体实现取决于C标准库的实现。qsort 是一个通用的排序函数,可以对任何类型的数组进行排序。 阅读详情

题目:最接近的三数之和

  • 题号:16
  • 难度:中等
  • https://leetcode-cn.com/problems/3sum-closest/

给你一个长度为 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-10^4 <= target <= 10^4−104<=target<=104

实现

第一种:利用暴力算法

执行结果:超出时间限制

public class Solution 
{
    public int ThreeSumClosest(int[] nums, int target) 
    {
        double error = int.MaxValue;
        int sum = 0;
        for (int i = 0; i < nums.Length - 2; i++)
            for (int j = i + 1; j < nums.Length - 1; j++)
                for (int k = j + 1; k < nums.Length; k++)
                {
                    if (Math.Abs(nums[i] + nums[j] + nums[k] - target) < error)
                    {
                        sum = nums[i] + nums[j] + nums[k];
                        error = Math.Abs(sum - target);                        
                    }
                }
        return sum;        
    }
}

第二种:利用 排序 + 三索引 的方法

C# 语言

public class Solution 
{
    public int ThreeSumClosest(int[] nums, int target) 
    {
        nums = nums.OrderBy(a => a).ToArray();
        int result = nums[0] + nums[1] + nums[2];
        for (int i = 0; i < nums.Length - 2; i++)
        {
            int start = i + 1, end = nums.Length - 1;
            while (start < end)
            {
                int sum = nums[start] + nums[end] + nums[i];
                if (Math.Abs(target - sum) < Math.Abs(target - result))
                    result = sum;
                if (sum > target)
                    end--;
                else if (sum < target)
                    start++;
                else
                    return result;
            }
        }
        return result;        
    }
}

Pyhton 语言

class Solution(object):
    def threeSumClosest(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        nums = sorted(nums)
        result = nums[0] + nums[1] + nums[2]
        for i in range(0, len(nums) - 2):
            start = i + 1
            end = len(nums) - 1
            while start < end:
                sum = nums[start] + nums[end] + nums[i]
                if abs(target - sum) < abs(target - result):
                    result = sum
                if sum > target:
                    end -= 1
                elif sum < target:
                    start += 1
                else:
                    return result
        return result
【中等】力扣算法题解析LeetCode16:最接近的三数之和 给定一个整数数组和目标值,找出三个数的和最接近目标值的组合。通过排序和双指针法优化搜索过程:外层循环固定一个数,内层使用双指针寻找剩余两数。通过最小/最大和优化提前终止无效循环,跳过重复元素减少计算。时间复杂度O(n²),空间复杂度O(1)。Java实现中,排序后遍历数组,结合双指针和剪枝策略高效求解,确保返回唯一最接近的和。 阅读详情

相关推荐

LeetCode-中等-16. 最接近的三数之和

LeetCode-中等-16. 最接近的三数之和 题目: 引用自:16. 最接近的三数之和(如有侵权联系删除) 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 示例: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 提示: 3 <= nums.leng

qq_38555932的博客 253

从Blender舞步到夜空画卷:基于Pix飞控的无人机编队灯光秀全链路开发实践

本文详细介绍了基于Pixhawk飞控的无人机编队灯光秀全链路开发实践。从Blender三维动画设计、QGroundControl地面站二次开发与MAVLink通信桥接,到PX4飞控的OFFBOARD模式路径控制与LED灯光驱动实现,最后通过Gazebo仿真验证并完成真机组装与首飞。文章为无人机爱好者提供了一套完整的、从创意设计到夜空执行的开源解决方案,重点阐述了多机同步与灯光控制的核心技术挑战与应对策略。

zeta9的博客 585

​leetcode算法题第16题:最接近的三数之和​

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。本题与 15. 三数之和 非常类似,可以使用「双指针」的方法来解决。 1.先把数组从小到大排序2.先确定第一个指针a,a从左往右依次遍历。3.随后确定第二指针b,第三指针c,b从a右边第一个数组往右遍历,c则从整个数组的末尾向前遍历。4.每当三个元素的和大于taget时,c向左移动一位,否则b向右移动一位。每一次移动,都

foolS22的博客 914

The moving least square approximation(MLS).

移动最小二乘法, moving least square

fanglovel的博客 299

基于Qt实现的轻量级CAD画图软件

基于Qt开发的轻量级CAD应用程序

weixin_44954230的博客 5658

leetcode-16-最接近的三数之和(中等)

16. 最接近的三数之和(中等) 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 示例: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 思路:排序+双指针 借鉴15题中的双指针思路,本题中只需要确定一个最优的答案,然后将其返回即可。因此,本题不需要排除重复答

qq_42320333的博客 257

CST 2023安装避坑指南:从下载到破解的完整流程(附常见报错解决方案)

本文提供CST 2023三维全波电磁场仿真软件的完整安装指南,涵盖从下载到破解的全流程,并附常见报错解决方案。详细解析安装步骤、许可证配置优化及高频问题诊断,帮助用户快速部署并优化软件性能,适用于射频电路设计、天线优化等场景。

7z8x2c4v6b9的博客 657

2022.02.17双指针解最接近的三数之和

2022.02.17双指针解最接近的三数之和 (题目来源:https://leetcode-cn.com/problems/3sum-closest/ ) 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 样例输入 nums = [-1,2,1,-4], target = 1 样例输出 2 数据规模和约定 3 <= nums.length <

Zack_zc_zc的博客 443

DRM遇到的实际问题及领悟(3)

DRM遇到的实际问题及领悟(3)

phmatthaus的专栏 636

1.DJI-payload SDK负载开发准备和硬件连接及运行示例代码

大疆psdk开发环境

哒宰的博客 1442

【LeetCode】第16题——最接近的三数之和(难度:中等)

【LeetCode】第16题——最接近的三数之和(难度:中等)题目描述解题思路代码详解注意点 题目描述 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 示例1: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 提示: 3 <= nums.length

Se7en_Dayz的博客 420

Axure RP9.0 教程:左侧菜单列表导航 ( 点击父级菜单,子菜单自动收缩或展开)【响应式的菜单导航】

1. 设置目标原件时,选择切换,这样就可以实现,当原件展示时,点击自动隐藏,隐藏时自动显示; 2. 展开/收起原件(推动/拉动原件)设置为方向**向下**

专注于计算机研发知识和资讯分享 1379

leetcode题:16. 最接近的三数之和(中等)

1、题目描述:16. 最接近的三数之和(中等) 给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 =...

tankpanv的博客 201

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

leetcode16(难度中等):最接近的三数之和

最接近的三数之和

qq_43461065的博客 165

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

力扣#16 最接近的三数之和(难度:中等)

题目: 给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。 示例: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 解题思路: 本题使用排序+双指针的方法,对数组进行升序排序,用res记录当前最优解,遍历数组: 令前指针指向下一个元素,后指针...

nlp87v5的博客 211

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【LeetCode闲暇一题】16. 最接近的三数之和【中等】关键词:数组,排序,双指针

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

积 548

【DAY14】力扣题16. 最接近的三数之和(难度:中等;C语言实现)

最接近的三数之和 给你一个长度为 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.leng.

weixin_44119905的博客 1611

【LeetCode】16. 最接近的三数之和

这道题要求从数组中找出三个数,使其和最接近目标值。核心解法是排序+双指针:先排序数组,然后固定一个数,用双指针寻找另外两个数,计算三数之和与目标的差值,不断更新最接近值。时间复杂度为O(n²),空间复杂度O(1)。关键优化包括跳过重复元素和剪枝处理。该算法适用于数值逼近、优化问题等场景,是经典的双指针应用范例。

qq_32019341的博客 1040

Java实现 LeetCode 16 最接近的三数之和

16. 最接近的三数之和 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整...

Marcus 3436

【LeetCode16】 最接近的三数之和

最接近的三数之和 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的...

sui_feng_piao_guo的博客 3792

leetcode-16. 最接近的三数之和

通过排序加双指针法,我们能够高效地解决三数之和最接近(3Sum Closest)的问题。该方法利用数组的有序性,通过双指针在固定一个元素的基础上快速查找剩余两个元素,以找到最接近目标值的和。关键步骤回顾:排序数组,简化搜索过程。固定第一个元素,使用双指针查找剩余两个元素。在查找过程中持续更新最接近的和。合理移动指针以优化搜索效率。掌握此类技巧,不仅有助于解决类似的编程问题,还能加深对双指针法和排序在算法中的应用理解。

qq_39370495的博客 849

LeetCode(C++)刷题计划:16-最接近的三数之和

16-最接近的三数之和 @Author:CSU张扬 @Email:csuzhangyang@gmail.com or csuzhangyang@qq.com Category Difficulty Pass rate Tags Companies algorithms Medium 41.91% array / two-pointers bloomberg 1. 题目 给定...

神奇小海螺的博客 8564
上一篇: Leetcode 中等:15. 三数之和
下一篇: Leetcode 中等:16. 最接近的三数之和
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程小助手_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值