zoukankan      html  css  js  c++  java
  • LeetCode 16. 最接近的三数之和

    16. 最接近的三数之和

    Difficulty: 中等

    给定一个包括 n 个整数的数组 nums和 一个目标值 target。找出 nums中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

    示例:

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

    提示:

    • 3 <= nums.length <= 10^3
    • -10^3 <= nums[i] <= 10^3
    • -10^4 <= target <= 10^4

    Solution

    class Solution:
        def threeSumClosest(self, nums: List[int], target: int) -> int:
            nums.sort()
            res = 0
            diff = float('inf')  # 设置一个极大值
            
            for i in range(len(nums)):
                l, r = i+1, len(nums)-1
                while l < r:
                    s = nums[i] + nums[l] + nums[r]
                    if abs(s-target) < diff:
                        diff = abs(s-target)
                        res = s
                    if s < target: l += 1  # 左指针右移
                    elif s > target: r -= 1  # 右指针左移
                    else: return res
            return res
    
  • 相关阅读:
    poj2186强连通分量
    poj1459SAP最大流模板题
    poj2391Floyd+二分+最大流
    curl上传下载入门
    Mysql存储过程
    小球旋转
    钟表单摆
    java小记 摘抄
    servlet的一些收集总结
    Javascript基础小结
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14352511.html
Copyright © 2011-2022 走看看