题目描述:
从一个list里找出三个数,和与target最接近
注意:
和15题一样,不过题目规定了有唯一解
重点是返回值是和,判断条件应该是和与target的差值
class Solution(object):
def threeSumClosest(self, nums, target):
nums.sort()
i=0
smin=2147483647
while i<len(nums)-2:
j=i+1;k=len(nums)-1
while j<k:
s=nums[i]+nums[j]+nums[k]
#print i,j,k,abs(s-target),s
#print i,j,k,s-target
if abs(s-target)<abs(smin-target):
smin=s
#print smin
if s==target:
return s
elif s<target:
t=j
while nums[t]==nums[j] and t<k:
t+=1
j=t
elif s>target:
t=k
while nums[t]==nums[k] and t>j:
t=t-1
k=t
i+=1
return smin
if __name__=="__main__":
sol=Solution()
nums=[1,1,1,0]
target=100
print sol.threeSumClosest(nums,target)