题目链接
思路
和上一道题一样,先排序,再用双指针法遍历。
代码
import kotlin.math.absclass Solution { fun threeSumClosest(nums: IntArray, target: Int): Int { var result = nums[0] + nums[1] + nums[2] var sub = abs(result - target) nums.sort() for (i in 0 until nums.size - 2) { var pLeft = i + 1 var pRight = nums.size - 1 while (pLeft < pRight) { val sum = nums[i] + nums[pLeft] + nums[pRight] val res = sum - target val nowSub = abs(sum - target) if (nowSub < sub) { result = sum sub = nowSub } if (res == 0) { return target }else if (res > 0) { pRight-- }else { pLeft++ } } } return result }}