zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    CSS美化自己的完美网页
    HTML基础做出属于自己的完美网页
    前端基础知识
    ajax应用篇
    mysql的介绍和安装
    MYSQL系列之(二)
    TP框架控制器的空操作
    Thinkphp框架基础
    PHP之Smarty模板引擎
    App 开发:Hybrid 架构下的 HTML5 应用加速方案
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9818330.html
Copyright © 2011-2022 走看看