トピック:
問題解決のアイデア:
コード:
fun threeSumClosest(nums: IntArray, target: Int): Int {
nums.sort() // 从小到大排序
var result = 100000 // 超过最大值被减的时候就是最小值
for (first in 0 until nums.size) {
if (first > 0 && nums[first] == nums[first - 1]) {
continue
}
var second = first + 1
var third = nums.size - 1
while (third > second) {
val sum = nums[first] + nums[second] + nums[third]
if (sum == target) {
return target
}
if (abs(target - sum) < abs(target - result)) {
result = sum
}
if (sum > target) {
third--
while (nums[third] == nums[third + 1] && third > second) {
third--
}
} else {
second++
while (nums[second] == nums[second - 1] && second < third) {
second++
}
}
}
}
return result
}