使用kotlin解决这个题目:16. 最接近的三数之和 中等 1.4K 相关企业 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。 示例 2: 输入:nums = [0,0,0], target = 1 输出:0 提示: 3 <= nums.length <= 1000 -1000 <= nums[i] <= 1000 -104 <= target <= 104
时间: 2024-01-17 11:03:50 浏览: 86
以下是使用 Kotlin 解决此问题的代码:
```kotlin
fun threeSumClosest(nums: IntArray, target: Int): Int {
nums.sort()
var closestSum = nums[0] + nums[1] + nums[2]
for (i in 0 until nums.size - 2) {
var left = i + 1
var right = nums.size - 1
while (left < right) {
val sum = nums[i] + nums[left] + nums[right]
if (Math.abs(sum - target) < Math.abs(closestSum - target)) {
closestSum = sum
}
when {
sum < target -> left++
sum > target -> right--
else -> return target
}
}
}
return closestSum
}
```
首先,对数组进行排序,然后遍历数组,将当前元素作为三个数中的第一个数,使用双指针法找到剩下两个数,计算它们的和与目标值的差的绝对值,与当前最接近目标值的和的差的绝对值进行比较,更新最接近目标值的和。根据三个数的和与目标值的大小关系,移动左右指针。最后返回最接近目标值的和。
阅读全文