Golang:
思路:这题能够从O(n3)优化到O(n2),确实让人感到不可思议。怎么说呢,还是自己太菜了。。。
代码如下:
func threeSumClosest(nums []int, target int) int {
sort.Ints(nums)
max:=nums[0]+nums[1]+nums[2]-target
for i:=0;i<len(nums)-2;i++{
if i!=0&&nums[i]==nums[i-1]{
continue
}
j,k:=i+1,len(nums)-1
for j<k{
temp:=nums[i]+nums[j]+nums[k]-target
if abs(temp)<abs(max){
max=temp
}
if temp>0{
k--
}
if temp<0{
j++
}
if temp==0{
return target
}
}
}
return target+max
}
func abs(i int) int {
if i < 0 {
i = -i
}
return i
}
有疑问加站长微信联系(非本文作者)