首页 > 编程语言 > 详细

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

时间:2020-04-17 20:02:02      阅读:756      评论:0      收藏:0      [点我收藏+]
题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
思路:三指针法,和牛顿下降法的思路很类似,给定一个初始值,不断迭代找到符合要求的最优值
class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        nums.sort()
        length = len(nums)
        limit = length - 2
        assume = nums[0] + nums[1] + nums[2]
        for i in range(limit):
            j = i + 1
            t = length -1
            while j < t:
                result = nums[i] + nums[j] + nums[t]
                if abs(target - assume) >= abs(target - result):
                    assume = result
                else:
                    assume = assume
                if target == result:
                    return result
                elif target < result:
                    t -= 1
                else:
                    j += 1
        return assume

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

原文:https://www.cnblogs.com/zhuozige/p/12721934.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!