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

题目:给定一个包括 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

猜你喜欢

转载自www.cnblogs.com/zhuozige/p/12721934.html