您的位置:首页 > 编程语言 > Python开发

leetcode之3Sum Closest

2016-01-05 17:27 561 查看
这题基本框架利用了3Sum,当然了没那么多的内容,稍微简化下就好了。代码如下:

class Solution(object):
def threeSumClosest(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
def threeSum(nums, sum1):
nums=sorted(nums)
n=len(nums)
if n==0:
return 0
if n <= 3:
if sum(nums) == sum1:
return True
else:
return None
i=0
while i<n:
l,r=i+1,n-1
target=sum1 -nums[i]
while l<r:
if nums[l]+nums[r]==target:
return sum1
elif nums[l]+nums[r] < target:
l+=1
else:
r-=1
i = i + 1
else:
return None
for i in range(10000):
if threeSum(nums, target + i) != None:
return target + i
if threeSum(nums, target - i) != None:
return target - i

如果当nums个数少,但是sum又偏离很多的时候,直接求出nums所有的解再来比较应该反而能快一点吧。。比较头3个数字以及后3个数字的和来缩小范围应该可以减少很多时间。我就不写了,比较简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息