• Leetcode题库——16.最接近的三数之和



    @author: ZZQ
    @software: PyCharm
    @file: threeSumClosest.py
    @time: 2018/10/14 20:28
    说明:最接近的三数之和。
    给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,
    使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
    例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
    与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

    思路: 类似三数之和,先确定一个指针,指向第一个数(指针范围:0到n-2,确保first和last指针存在)
    然后比较三数之和与target之间的绝对值与原来结果的大小,每次更新到最新的满足条件的和。

    class Solution():
        def __init__(self):
            pass
    
        def threeSumClosest(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: int
            """
            nums.sort()
            ans = nums[0] + nums[1] + nums[2]
            nums_len = len(nums)
            if nums_len == 0:
                return []
            for middle in range(len(nums) - 2):
                if middle == 0 or nums[middle] > nums[middle - 1]:
                    first = middle + 1
                    last = len(nums) - 1
                    while first < last:
                        sum = nums[first] + nums[last] + nums[middle]
                        if abs(ans-target) >= abs(sum-target):
                            ans = sum
                        if sum >= target:
                            last -= 1
                        if sum < target:
                            first += 1
            return ans
    
    
    if __name__ == "__main__":
        answer = Solution()
        print answer.threeSumClosest([-1, 1, 1, 1], -100)
    
  • 相关阅读:
    团队开发——描绘用户场景
    学习EXTJS6(2)“Hello Usegear”
    D2007从win7升级到win10下的莫名其妙问题。
    学习EXTJS6(1)安装环境
    raize5的修改。
    EurekaLog是什么鬼?
    EditorLineEnds.ttr的困扰
    dev的汉化
    cxGrid主从表删除从表记录的困惑
    痛苦的Windows下的temp目录
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9818330.html
Copyright © 2020-2023  润新知