16. 3Sum Closest

来源:互联网 发布:矩阵开根号 编辑:程序博客网 时间:2024/06/03 18:29

16. 3Sum Closest

先排序,在左右夹逼

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

 For example, given array S = {-1 2 1 -4}, and target = 1.    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

class Solution(object):    def threeSumClosest(self, nums, target):        """        :type nums: List[int]        :type target: int        :rtype: int        """        array = nums[:]  #  可以直接对nums排序,不要深拷贝        array.sort()        length = len(array)        gap = sys.maxint        result = 0        for i in range(0, length):            j = i + 1            k = length - 1            while j < k:                sum = array[i] + array[j] + array[k]                temp = abs(sum - target)                if temp < gap:                    gap = temp                    result = sum                if sum < target:                    j += 1                else:                    k -= 1        return result


原创粉丝点击