LeetCode——最接近的三数之和

前提是你 提交于 2020-03-05 22:28:26

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

答题思路:
1)对数组进行排序
2)设置一个总循环,循环变量设为i
3)设置左右指针,分别从i+1和最后的元素开始进行遍历
4)得到结果
具体程序如下:

class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        lens=len(nums)
        nums.sort()
        m=nums[lens-1]+nums[lens-2]+nums[lens-3]
        n=nums[0]+nums[1]+nums[2]
        for i in range(lens):
            L=i+1
            R=lens-1
            if i>0 and nums[i-1]==nums[i]:
                i+=1
                continue
            while L<R:
                a=nums[i]+nums[L]+nums[R]
                if a==target:
                    return a
                elif a>target:
                    if a<=m:
                        m=a
                    R-=1
                else:
                    if a>=n:
                        n=a
                    L+=1
        if (target-n)>(m-target):
            return m
        else :
            return n

程序运行参数如下:
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!