給定乙個包括 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...