16. 3Sum Closest
跟Q15相比,就是加一个对差值abs(target-cur)的tracking,遇到差值更小的就更新,差值为0直接返回(不会更小了)。
15. 3Sumclass Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
if len(nums) < 3: return []
nums.sort()
res = nums[0] + nums[1] + nums[-1]
for i, n in enumerate(nums[:-2]):
if i > 0 and n == nums[i-1]: continue
l, r = i+1, len(nums)-1
while l < r:
cur = n + nums[l] + nums[r]
if abs(target - cur) < abs(target - res): res = cur
if cur > target: r-=1
elif cur < target: l+=1
else:
return res
return res
Last updated
Was this helpful?