#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.
class Solution(object):
def threeSumClosest(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
# l=len(nums)
# if nums==0:
# return
# s=nums[0]+nums[1]+nums[2]
# r=abs(s-target)
# for i in range(0,l-2):
# for j in range(i+1,l-1):
# for k in range(j+1,l):
# sum=nums[i]+nums[j]+nums[k]
# if(abs(sum-target)<r):
# s=sum
# r=abs(sum-target)
# if r==0:
# return s
# return s
l=len(nums)
if l==0:
return
nums.sort()
res=nums[0]+nums[1]+nums[2]
for i in range(l-2):
j=i+1
k=l-1
while j<k:
sum = nums[i] + nums[j] + nums[k]
if abs(sum-target)<abs(res-target):
res=sum
if sum==target:
return sum
if sum<target:
j+=1
if sum>target:
k-=1
return res
if __name__=="__main__":
print(Solution().threeSumClosest([0,0,0],1))