16. 最接近的三数之和(medium)

2019-05-18  本文已影响0人  genggejianyi

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        nums.sort()
        n,res = len(nums),nums[0]+nums[1]+nums[2]
        for i in range(n):
            l,r = i+1,n-1
            while l < r:
                s = nums[i]+nums[l]+nums[r]
                if abs(s-target) < abs(res-target):
                    res = s
                if s < target:
                    l += 1
                elif s > target:
                    r -= 1
                else:
                    return target
        return res
时间复杂度:n2,空间复杂度:1
上一篇下一篇

猜你喜欢

热点阅读