码迷,mamicode.com
首页 > 编程语言 > 详细

3Sum Closest Leetcode Python

时间:2015-01-17 12:43:35      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:array   leetcode   python   

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.


    For example, given array S = {-1 2 1 -4}, and target = 1.


    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

这题的做法和3sum一样只不过把sum=0改成sum变成target,需要设置一个minval来记录每次和target的最小,如果得到的差值小于记录值那么就将sum赋值给result 最后输出。

时间复杂度依然为O(n^2)


This problem is similar to 3 sum, beside use three pointers to track the value of the 3sums we need to use an extra tracker minval to track the difference between the target and the sum. When the the abs(sum-target)<minval we pass abs(sum-target) to minval and pass sum to result. if any of the sum=target we return target, otherwise return result when all the iteration finished.

the time complexity is O(n^2) space O(1)

code as follow:

class Solution:
    # @return an integer
    def threeSumClosest(self, num, target):
        minval=100000
        num.sort()
        for i in range(len(num)):
            #if i>0 and num[i]==num[i-1]:
             #   continue
            left=i+1
            right=len(num)-1
            while left<right:
                val=num[i]+num[left]+num[right]
                
                if abs(val-target)<minval:
                    minval=abs(val-target)
                    result=val
                if val==target:
                    return target
                if val<=target:
                    left+=1
                else:
                    right-=1
        return result
                    
                    
                    


3Sum Closest Leetcode Python

标签:array   leetcode   python   

原文地址:http://blog.csdn.net/hyperbolechi/article/details/42803555

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