leetcode 16. 3Sum Closest的思路与python实现

我的leetcode系列博文一般没什么参考价值,思路一般懒得叙述完整。代码可以看看,不过leetcode的discussion里有更好的。纯属随便记录。

思路

这题跟3SUM的做法差不多。

记得先把数组sort了。

在比较当前solution和存储的solution哪个好的时候,记得使用abs算绝对值。

要思考的是3SUM里使用的left, right双指针寻找exactly的solution,能否用在这里找到closest的solution呢?

可以。

代码

class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        if len(nums) < 3:
            return 0
        nums.sort()
        res = nums[0] + nums[1] + nums[2]
        for i in range(len(nums) - 2):
            left, right = i + 1, len(nums) - 1
            while left < right:
                summary = nums[i] + nums[left] + nums[right]
                if abs(target - summary) < abs(target - res):
                    res = summary
                if summary == target:
                    return target
                elif summary > target:
                    right -= 1
                else:
                    left += 1
        return res

 

你可能感兴趣的:(leetcode)