zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    第10组 Alpha冲刺(4/4)
    python2中的新式类与经典类区别
    http请求Content-Type有几种
    2020 年软件设计师考试大纲
    11-Elasticsearch之-组合查询
    16-扩展阅读-摘录
    各种排序算法
    Vmware虚拟机三种网络模式详解(转载)
    无法访问 CentOS7服务器上应用监听的端口
    VsCode 常用插件清单
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12721934.html
Copyright © 2011-2022 走看看