python计算列表中最接近的三数之和
题目描述
给定一个包括 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计算列表中最接近的三数之和相关推荐
- python【力扣LeetCode算法题库】16- 最接近的三数之和
最接近的三数之和 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答 ...
- LeetCode 15三数之和16最接近的三数之和
三数之和(双指针) 题意: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...
- [Leetcode16]最接近的三数之和
[Leetcode16]最接近的三数之和 转载自leetcode https://leetcode-cn.com/problems/3sum-closest/ 1.题目 给定一个包括 n 个整数的数组 ...
- 20200126:(leetcode)三数之和 最接近的三数之和(含图解)
三数之和 && 最接近的三数之和 题目 基本思路 代码实现 题目 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b ...
- LeetCode15. 三数之和 16. 最接近的三数之和
LeetCode15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组 ...
- Leetcode算法Java全解答--16. 最接近的三数之和
Leetcode算法Java全解答–16. 最接近的三数之和 文章目录 Leetcode算法Java全解答--16. 最接近的三数之和 题目 想法 结果 总结 代码 我的答案 暴力破解 滑动列表 大佬 ...
- 算法:最接近的三数之和
题目: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 示例 ...
- 【算法系列之十二】最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数 ...
- 【算法】3Sum Closest 最接近的三数之和
文章目录 3Sum Closest 最接近的三数之和 问题描述: 分析 代码 二分 双指针 Tag 3Sum Closest 最接近的三数之和 问题描述: 给你一个长度为 n 的整数数组 nums 和 ...
最新文章
- git 打tag_图文讲解,团队开发中的 Git 最佳实践
- docker 镜像修改的配置文件自动还原_Docker 基础与实战,看这一篇就够了
- webpack3 css,媒体查询不能使用CSS /样式加载器和Webpack3
- 如何通过 Linq 将集合拆成多个块?
- java 不能用 random,关于Java中Random的一些使用细节
- r语言调用python_小众做法,通过python调用R语言的第三方包
- 好的测试用例应能证明软件是正确的.,好的测试用例应能证明软件是正确的。...
- [Vue CLI 3] 环境变量和模式配置实践与源码分析
- mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云
- linux 双mipii摄像头,Toybrick-开源社区-TB-RK3399ProD-imx258摄像头 mipi 错误
- 一文了解驱动程序及更新方法
- Egret引擎的EUI基础使用教程
- 多旋翼飞行器设计与控制·绪论(笔记001)
- Matlab-RBF网络(径向基函数网络)-rbepnngrnn
- EventBus简介与使用
- 图片编辑器哪个比较好?这篇文章告诉你
- Python开发 之 去除字符串中 首个指定字符串
- AD 20联合KeyShot实现渲染
- 【netcore】 docker 读写文件问题 报错Gdip
- 感性电路电流计算_感性负载并联电容后可以提高电路的功率因数,为什么不采用串联?...