0
点赞
收藏
分享

微信扫一扫

【LeetCode Python实现】16. 最接近的三数之和(中等)

color_小浣熊 2022-04-14 阅读 33

文章目录


题目描述

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。

返回这三个数的和。

假定每组输入只存在恰好一个解。

示例 1:

输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。

示例 2:

输入:nums = [0,0,0], target = 1
输出:0

提示:

3 <= nums.length <= 1000
-1000 <= nums[i] <= 1000
-104 <= target <= 104

参考代码

排序后 使用双指针

第一步   -4  -1  1  2    结果-3
i j k
第二步 -4 -1 1 2 结果-1
i j k
第三步 -4 -1 1 2 结果2
i j k
# 200 ms	15.2 MB
class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        nums = sorted(nums)

        min_ = sum(nums[:3])

        for i in range(0, len(nums)-2):
            j = i + 1
            k = len(nums) - 1
            while j != k:
                temp = nums[i] + nums[j] + nums[k]
                if temp == target:
                    return temp
                elif temp > target:
                    k -= 1
                else:
                    j += 1
                
                if abs(min_ - target) > abs(temp - target):
                    min_ = temp

        return min_
                
举报

相关推荐

0 条评论