码迷,mamicode.com
首页 > 其他好文 > 详细

59. 最接近的三数之和

时间:2020-05-05 00:42:05      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:如何   tco   整数   ima   problem   mat   时间复杂度   运行时间   markdown   

59. 最接近的三数之和

中文English

给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。

样例

例1:

输入:[2,7,11,15],3
输出:20
解释:
2+7+11=20

例2:

输入:[-1,2,1,-4],1
输出:2
解释:
-1+2+1=2

挑战

O(n^2) 时间, O(1) 额外空间。

注意事项

只需要返回三元组之和,无需返回三元组本身

 
 
输入测试数据 (每行一个参数)如何理解测试数据?

 

class Solution:
    """
    @param numbers: Give an array numbers of n integer
    @param target: An integer
    @return: return the sum of the three integers, the sum closest target.
    """
    def threeSumClosest(self, numbers, target):
        # write your code here
        res = []
        d = []
        numbers.sort()
        for i in range(len(numbers)):
            if i == 0:
                d.append([numbers[i]])
            else:
                for j in range(len(d)):
                    a = d[j] + [numbers[i]]
                    d.append(d[j] + [numbers[i]])

                    if a not in res and len(a) == 3:
                        res.append(a)
                d.append([numbers[i]])

                
        
        p = 2**32
        r = 0
        for z in res:
            if abs(sum(z) - target) < p:
                p = abs(sum(z) - target)
                r = sum(z)
        return r

注:lintcode未通过,你的代码运行时间超过了限制,检查你的时间复杂度。TLE通常是由死循环造成的,思考一下你的时间复杂度是否是最优的。

59. 最接近的三数之和

标签:如何   tco   整数   ima   problem   mat   时间复杂度   运行时间   markdown   

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12828993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!