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

【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

解释: 与 target 最接近的和是 0(0 + 0 + 0 = 0)。

提示:

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

二、解题过程

1、第一次尝试

1.1 代码如下
使用一种称为“三指针”或“两边夹逼”的方法。这个算法的基本思路是首先对数组进行排序,然后使用一个固定指针遍历数组,每次通过双指针的方法在剩下的数组部分寻找另外两个数,使得这三个数的和最接近目标值 target。

class Solution(object):def threeSumClosest(self, nums, target):""":type nums: List[int]:type target: int:rtype: int"""# 首先,对数组进行排序nums.sort()# 初始化结果为一个很大的数closest_sum = float('inf')# 遍历数组for i in range(len(nums) - 2):# 使用双指针left, right = i + 1, len(nums) - 1while left < right:current_sum = nums[i] + nums[left] + nums[right]

相关文章:

  • 基于“理采存管用”的数据中台建设方案
  • Linux系统编程学习 day4 进程
  • mpstat指令介绍
  • [Java]Map和Set
  • AIBOX集成接口协议 V1.0
  • Sysstat学习入门
  • 一台 Master 多节点玩转 Kubernetes:sealos 一键部署实践
  • Proxmox VE 用户与权限管理命令大全
  • 2025年4月16日华为笔试第一题100分
  • MATLAB基础应用精讲-【数模应用】使用 TCP/IP 接口进行数据的写入和读取(附MATLAB和python代码实现)
  • uniapp通过uni.addInterceptor实现路由拦截
  • 条款07:为多态基类声明一个virtual析构函数
  • SL1680 SoC本地运行DeepSeek R1 1.5B大模型
  • vue将“00:00:09“的时间转换为秒,将时分秒hh:mm:ss的格式转换为秒,
  • 搭建 vue 项目环境详细步骤
  • qt+mingw64+cmake+libqrencode项目编译和搭建成功记录
  • Jsp技术入门指南【四】详细讲解jsp与Servlet的对比和Jsp生命周期和工作原理
  • VBA技术资料MF293:不打开工作簿获取值
  • 【运维学习】lvs + keepalived + 主从dns 项目搭建
  • 运筹学之指派问题(原始匈牙利算法以及KM算法)
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套
  • “五一”看什么?这里有一份申城视听指南
  • 美国经济萎缩意味着什么?关税政策如何反噬经济?
  • 宿州市委副书记任东已任市政府党组书记
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛将焕新登场
  • 国家卫健委有关负责人就白皮书发布答记者问