描述
找到两个数字使得他们和最接近target
您在真实的面试中是否遇到过这个题? 是
样例
nums = [-1, 2, 1, -4]
,target = 4
.
最接近值为 1
挑战
Do it in O(nlogn) time complexity.
实现代码:
思路:对数组排序,然后首尾相加,如果和小于target,则首后移,如果大于target,则尾前移,如果等于target则直接返回0
class Solution:
"""
@param nums: an integer array
@param target: An integer
@return: the difference between the sum and the target
"""
def twoSumClosest(self, nums, target):
# write your code here
nums.sort()
import sys
res = sys.maxsize
l , r = 0, len(nums) - 1
while l < r:
temp = nums[l] + nums[r]
if temp == target:
return 0
if temp < target:
l += 1
else:
r -= 1
res = min(res, abs(temp - target))
return res