LeetCode 16 最接近的三數之和

2021-10-12 10:37:35 字數 1430 閱讀 3807

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

輸入:nums = [-1,2,1,-4], target = 1

輸出:2

解釋:與 target 最接近的和是 2 (-1 + 2 + 1 = 2)

**:雙指標題目,固定第一維度,然後就是典型雙指標了。

class

solution

:def

threesumclosest

(self, nums: list[

int]

, target:

int)

->

int:

n =len(nums)

ans =

1e9 nums.sort(

)for i in

range

(n-2):

l, r = i+

1, n-

1 max_num = nums[i]

+ nums[-2

]+ nums[-1

] min_num = nums[i]

+ nums[i+1]

+ nums[i+2]

if max_num < target:

#當前最大數大於target

ifabs

(max_num - target)

<

abs(ans - target)

: ans = max_num

continue

if min_num > target:

#全域性最小數小於target

ifabs

(min_num - target)

<

abs(ans - target)

: ans = min_num

break

while l < r:

#雙指標

sums = nums[i]

+ nums[l]

+ nums[r]

ifabs

(sums - target)

<

abs(ans - target)

: ans = sums

#print(ans)

if sums - target ==0:

return sums

elif sums - target <0:

l +=

1else

:r -=

1return ans

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...