任务描述
思路
- 双指针
- 先排序,然后遍历nums中每个元素,记录ans和sum并比较大小,移动头尾指针使三数之和靠近target
代码实现
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
sum = nums[0]+nums[1]+nums[2]
for i in range(len(nums)):
l = i+1
h = len(nums)-1
while l<h:
ans = nums[i]+nums[l]+nums[h]
if abs(target-ans)<abs(target-sum):
sum = ans
if target<ans:
h -= 1
elif target>ans:
l += 1
else:
return sum
return sum