lintcode练习-533. 两数和的最接近值

描述

找到两个数字使得他们和最接近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
        
 

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/81460177
今日推荐