Given an array nums
of n integers and an integer target
, find three integers in nums
such that the sum is closest to target
. Return the sum of the three integers. You may assume that each input would have exactly one solution.
Example:
Given array nums = [-1, 2, 1, -4], and target = 1. The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
Seen this question in a real interview before?
Yes
No
-
Subscribe to see which companies asked this question.
Related Topics
和上一个LeetCode15 3sum相似
让我WA了那么就居然是因为最后一行return 缩进多写了一个???
class Solution(object):
def threeSumClosest(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
nums.sort()
ans=0x3f3f3f3f
s=0
for i in range(len(nums)):
if(ans==0):
break
t=nums[i]
l=i+1
r=len(nums)-1
while(l<r):
if(ans>abs(target-t-nums[l]-nums[r])):
ans=abs(target-t-nums[l]-nums[r])
s=t+nums[l]+nums[r]
if(t+nums[l]+nums[r]>target):
r=r-1
elif(t+nums[l]+nums[r]<target):
l=l+1
else:
break
return s