题目描述
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
示例1
输入: nums = [-1,2,1,-4], target = 1. 输出: 2 解释: 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
题解
代码
c++
classSolution { public: intthreeSumClosest(vector<int>&nums, inttarget) { intn=nums.size(), res=10000000; sort(nums.begin(), nums.end() ); for (inti=0; i<n-2; ++i) { intl=i+1, r=n-1; while (l<r) { intsum=nums[i] +nums[l] +nums[r]; if (sum==target) returnsum; if (abs(sum-target) <abs(res-target)) res=sum; if (sum>target) r--; elsel++; } } returnres; } };
python
classSolution: defthreeSumClosest(self, nums: List[int], target: int) ->int: n, res=len(nums), 10000000nums.sort() foriinrange(n-2): l, r=i+1, n-1whilel<r: s=nums[i] +nums[l] +nums[r] ifs==target: returnsifabs(s-target) <abs(res-target): res=sifs>target: r-=1else: l+=1returnres
作者简介:godweiyang,知乎同名,华东师范大学计算机系硕士在读,方向自然语言处理与深度学习。喜欢与人分享技术与知识,期待与你的进一步交流~