美文网首页
LeetCode-16 - 3Sum Closest

LeetCode-16 - 3Sum Closest

作者: 空即是色即是色即是空 | 来源:发表于2017-11-20 16:40 被阅读15次

    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).

    思路

    遵循上一题3sum的算法,主要在于条件判断的写法。
    closet意味着差值的绝对值最小

    class Solution(object):
        def threeSumClosest(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: int
            """
            result = []
            minr = nums[0] + nums[1] + nums[2]
            nums.sort()
            for i in range(len(nums) - 2):
                l, r = i + 1, len(nums) - 1
                while l < r:
                    s = nums[i] + nums[l] + nums[r]
                    #print nums[i], nums[l], nums[r], s
                    if abs(target - s) < abs(minr):
                        minr = target - s
                    if target - s < 0:
                        r -= 1
                    else:
                        l += 1
            return target - minr
    

    相关文章

      网友评论

          本文标题:LeetCode-16 - 3Sum Closest

          本文链接:https://www.haomeiwen.com/subject/okgvvxtx.html