16. 3Sum Closest
题目
从给出的numbers数组中找出三个数组最接近于目标结果。
讨论区代码
class Solution:
# @return an integer
def threeSumClosest(self, num, target):
num.sort() # 排序
result = num[0] + num[1] + num[2] #前三个
# 遍历所有,i取随机一个,j取比i大的,k从后往前取值
for i in range(len(num) - 2):
j, k = i+1, len(num) - 1
while j < k:
sum = num[i] + num[j] + num[k]
if sum == target:
return sum
if abs(sum - target) < abs(result - target):
result = sum
if sum < target:
j += 1
elif sum > target:
k -= 1
return result