题目描述

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

LeetCode原题地址:https://leetcode-cn.com/problems/3sum-closest/

测试用例

  • 示例

输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。

注意

3 <= nums.length <= 10^3
-10^3 <= nums[i] <= 10^3
-10^4 <= target <= 10^4

代码实现

其实这个题目与上一题中的计算三数之和有点类似,不过我们可以稍微做点优化,当三数之和等于target时可以直接返回结果。除此之外,我们还可以通过判断当前的三数之和与target之间的大小,来决定移动那个指针,便于我们快速找到最接近的三数之和。

class Solution:def threeSumClosest(self, nums, target: int) -> int:best_score = 10**5nums_len = len(nums)#对nums进行排序nums = sorted(nums)for i in range(0,nums_len):#对于重复的组合直接跳过if i > 0 and nums[i] == nums[i-1]:continuej,k = i+1,nums_len-1while j < k:#计算三数之和t_sum = nums[i] + nums[j] + nums[k]#如果三数之和等于target,直接退出if t_sum == target:return t_sumelse:#更新best_scoreif abs(t_sum-target) < abs(best_score-target):best_score = t_sum#如果三数之和大于target,就需要减少三数之和#将指针k向左移动if t_sum > target:k0 = k - 1#如果移动后的数与之前指针k指向的数相等,就继续向左移动指针while k0 > j and nums[k] == nums[k0]:k0 -= 1k = k0else:#三数之和小于target,需要增大三数之和#将指针j向右移动j0 = j + 1#如果移动后的数与之前指针j指向的数相等,就继续向右移动指针while k > j0 and nums[j] == nums[j0]:j0 += 1j = j0return best_scoresolution = Solution()
print(solution.threeSumClosest(nums = [1,2,4,8,16,32,64,128], target = 82))

python计算列表中最接近的三数之和相关推荐

  1. python【力扣LeetCode算法题库】16- 最接近的三数之和

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

  2. LeetCode 15三数之和16最接近的三数之和

    三数之和(双指针) 题意: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...

  3. [Leetcode16]最接近的三数之和

    [Leetcode16]最接近的三数之和 转载自leetcode https://leetcode-cn.com/problems/3sum-closest/ 1.题目 给定一个包括 n 个整数的数组 ...

  4. 20200126:(leetcode)三数之和 最接近的三数之和(含图解)

    三数之和 && 最接近的三数之和 题目 基本思路 代码实现 题目 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b ...

  5. LeetCode15. 三数之和 16. 最接近的三数之和

    LeetCode15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组 ...

  6. Leetcode算法Java全解答--16. 最接近的三数之和

    Leetcode算法Java全解答–16. 最接近的三数之和 文章目录 Leetcode算法Java全解答--16. 最接近的三数之和 题目 想法 结果 总结 代码 我的答案 暴力破解 滑动列表 大佬 ...

  7. 算法:最接近的三数之和

    题目: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 示例 ...

  8. 【算法系列之十二】最接近的三数之和

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

  9. 【算法】3Sum Closest 最接近的三数之和

    文章目录 3Sum Closest 最接近的三数之和 问题描述: 分析 代码 二分 双指针 Tag 3Sum Closest 最接近的三数之和 问题描述: 给你一个长度为 n 的整数数组 nums 和 ...

最新文章

  1. git 打tag_图文讲解,团队开发中的 Git 最佳实践
  2. docker 镜像修改的配置文件自动还原_Docker 基础与实战,看这一篇就够了
  3. webpack3 css,媒体查询不能使用CSS /样式加载器和Webpack3
  4. 如何通过 Linq 将集合拆成多个块?
  5. java 不能用 random,关于Java中Random的一些使用细节
  6. r语言调用python_小众做法,通过python调用R语言的第三方包
  7. 好的测试用例应能证明软件是正确的.,好的测试用例应能证明软件是正确的。...
  8. [Vue CLI 3] 环境变量和模式配置实践与源码分析
  9. mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云
  10. linux 双mipii摄像头,Toybrick-开源社区-TB-RK3399ProD-imx258摄像头 mipi 错误
  11. 一文了解驱动程序及更新方法
  12. Egret引擎的EUI基础使用教程
  13. 多旋翼飞行器设计与控制·绪论(笔记001)
  14. Matlab-RBF网络(径向基函数网络)-rbepnngrnn
  15. EventBus简介与使用
  16. 图片编辑器哪个比较好?这篇文章告诉你
  17. Python开发 之 去除字符串中 首个指定字符串
  18. AD 20联合KeyShot实现渲染
  19. 【netcore】 docker 读写文件问题 报错Gdip
  20. 感性电路电流计算_感性负载并联电容后可以提高电路的功率因数,为什么不采用串联?...

热门文章

  1. 海格里斯HEGERLS库架合一|仓储托盘四向穿梭车在冷库冷链行业中的应用
  2. uni-app搜索-历史记录
  3. 生物JC UVSSA复合物缓解MYC驱动的转录压⼒ English
  4. 如何用计算机计算梁的受力,如何计算梁的承重
  5. 查询选修课程2门以上且成绩都在80分以上的学生(MSSQL)
  6. eggs和egg是什么意思_egg的意思是鸡蛋,你知道a good egg是什么意思吗?
  7. 主成分得分和因子得分
  8. 我的程序人生路——雷军
  9. 非常详细的共模电感及滤波器的设计!(转载)
  10. 【计算机科学】【2019.09】全基因组关联研究的深度学习和SNP位置影响