\u7ed3\u679c\u8981\u6c42\u8fd4\u56de\u7684\u662f\u548c\u800c\u4e0d\u662f\u4e09\u5143\u7ec4 \u4f8b\u5b50 \u8f93\u5165 nums1 1 1 1 target 100 \u8f93\u51fa 3 \u89e3\u9898\u601d\u8def \u601d\u8def\u4e0e 3Sum

结果要求返回的是和而不是三元组 例子

This preview shows page 48 - 54 out of 417 pages.

结果要求返回的是和,而不是三元组 例子: 输入 : nums=[1, 1, 1, 1], target=-100 输出 : 3 解题思路 思路与 3Sum 基本相同,现在要额外维护一个表示之前三元组中与目标值的差最小 值的变量,这个变量的初始化值应该很大,防止把有意义的三元组直接排除了。此 外,由于题目中明确说只有唯一的一组最优解,所有不用考虑重复数字了。 AC 源码 016 3Sum Closest 48
Image of page 48
class Solution (object) : def threeSumClosest (self, nums, target) : """ :type nums: List[int] :type target: int :rtype: int """ nums.sort() i = 0 result = 0 # Init the distance between result and target with a ver y large number distance = pow( 2 , 32 ) - 1 for i in range(len(nums)): j = i + 1 k = len(nums) - 1 while j < k: l = [nums[i], nums[j], nums[k]] if sum(l) == target: return target if abs(sum(l) - target) < distance: result = sum(l) distance = abs(sum(l) - target) elif sum(l) > target: k -= 1 else : j += 1 return result if __name__ == "__main__" : assert Solution().threeSumClosest([ 1 , 1 , 1 , 1 ], -100 ) == 3 欢迎查看我的 Github ( ) 来获得相关源 码。 016 3Sum Closest 49
Image of page 49