question
find three numbers whose sum is closed to the target number.
algorithm
Enumerate the first number, then get two numbers whose sum is closed to the target number minus the first number.
code
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
ans = nums[0] + nums[1] + nums[2]
sNum = len(nums)
for a in range(sNum):
b = a+1
c = sNum-1
while b < c:
threeSum = nums[a] + nums[b] + nums[c]
if abs(threeSum - target) < abs(ans - target):
ans = threeSum
if threeSum == target:
return target
elif nums[a] + nums[b] + nums[c] < target:
b += 1
else:
c -= 1
return ans