class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
#-1 2 1 -4
#i l r
#-4 -1 1 2
min_=10000
res=0
for i in range(len(nums)):
l=i+1
r=len(nums)-1
while(l<r):
if abs(nums[i]+nums[l]+nums[r]-target)<min_:
min_=nums[i]+nums[l]+nums[r]-target
res=nums[i]+nums[l]+nums[r]
l+=1
l=i+1
while(l<r):
if abs(nums[i]+nums[l]+nums[r]-target)<min_:
min_=nums[i]+nums[l]+nums[r]-target
res=nums[i]+nums[l]+nums[r]
r-=1
return res
本人思路:三个指针 全部遍历 比较(思考,排序与不排序的区别!)
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
#-1 2 1 -4
#i l r
#-4 -1 1 2
nums.sort()
min_=10000
res=0
for i in range(len(nums)):
l=i+1
r=len(nums)-1
while(l<r):
ans=nums[i]+nums[l]+nums[r]
if abs(ans-target)<min_:
min_=abs(ans-target)
res=ans
if ans>target:
r-=1
else:
l+=1
return res