16. 3Sum Closest

题目

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