#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @time: 2019/3/14
# @author: xfli
# the file...
"""問題分析:
與15題相似,可以先從小到大排序,然後固定乙個值,從這個值的右區間開始,設定兩個指標 left, right向最近值逼近。
(1)對nums從小到大排序。
(2)遍歷(或者是列舉)取出乙個值,並確定右區間和指標 left, right。
(3)更新最優值,已經根據當前三個數的和,移動指標 left, right。
(4)繼續(2)(3)直至結束。
"""def threesumclosest(nums, target):
nums.sort()
closest_sum = nums[0] + nums[1] + nums[2]
for i in range(len(nums) - 2):
left, right = i + 1, len(nums) - 1
while left < right:
sums = nums[i] + nums[left] + nums[right]
if sums == target: return sums
if abs(sums - target) < abs(closest_sum - target):
closest_sum = sums
if sums > target:
right -= 1
if sums < target:
left += 1
return closest_sum
if __name__ == '__main__':
nums = [-1, 2, 1, -4]
target = 1
result = threesumclosest(nums, target)
print(result)
LeetCode 16 最接近的三數之和
題目傳送門 給定乙個包括 n 個整數的陣列nums和 乙個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2 ...
leetcode 16 最接近的三數之和
給定乙個包括 n 個整數的陣列nums和 乙個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2 1 2 顯然...
Leetcode 16 最接近的三數之和
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2...