Leetcode 最接近的三數之和

2021-09-10 13:25:09 字數 1259 閱讀 6565

給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。

例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.

與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).

先排序,然後從兩端開始向中間搜尋,i為遍歷後的數字,r表示最右端數字,l表示nums[i + 1],我們考慮這三個數與target的差值,若是大於0,則我們把r挪一位(r-=1),若是小於0,則將l挪一位(l+=1),等於0直接返回target, 同時每次操作時把三位數與target的差值放入列表中,然後把 i 挪一位(i +=1),再重複上面的操作。最後我們會得到三個數與target差值的列表,再對其排序,我們可以找到唯一的一組相鄰的兩個數數,比較這兩個數的絕對值,返回絕對值小的那個數與target的和。

class

solution

:def

threesumclosest

(self, nums, target)

: nums.sort(

) res_sum = nums[0]

+ nums[1]

+ nums[2]

res_abs =

abs(nums[0]

+nums[1]

+nums[2]

-target)

for i in

range

(len

(nums)-2

):l = i +

1 r =

len(nums)-1

while l < r:

three_sum = nums[i]

+ nums[l]

+ nums[r]

abs_sub =

abs(three_sum - target)

if abs_sub ==0:

return target

elif abs_sub < res_abs:

res_abs = abs_sub

res_sum = three_sum

elif three_sum > target:

r -=

1else

: l +=

1return res_sum

LeetCode 最接近的三數之和

給定乙個包括 n 個整數的陣列nums和 乙個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2 1 2 cl...

LeetCode 最接近的三數之和

q 給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。示例 輸入 nums 1,2,1,4 target 1 輸出 2 解釋 與 target 最接近的和是 2 1...

LeetCode之最接近的三數之和

題目描述 給定乙個包括 n 個整數的陣列nums和 乙個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2 1...