16. 最接近的三數之和
給定乙個包括 n 個整數的陣列nums
和 乙個目標值target
。找出nums
中的三個整數,使得它們的和與target
最接近。返回這三個數的和。假定每組輸入只存在唯一答案。
例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.
與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).
這道題和15 - 三數之和 - python區別並不大,所以可以重用大部分的**。分析題意,題目要求在陣列中找到三個數使其之和最接近與target
,並且答案唯一,那麼:
ac code
import sys
class
solution
:def
threesumclosest
(self, nums: list[
int]
, target:
int)
->
int:
iflen
(nums)
<3:
return
none
iflen
(nums)==3
:return
sum(nums)
mindiff = sys.maxsize
nums.sort(
)for cur in
range
(len
(nums)-2
):if cur >
1and nums[cur]
== nums[cur -1]
:continue
left = cur +
1 right =
len(nums)-1
while left < right :
threesum = nums[cur]
+ nums[left]
+ nums[right]
diff = threesum - target
if diff ==0:
return threesum
elif
abs(diff)
< mindiff:
mindiff =
abs(diff)
closestsum = threesum
if diff <0:
left +=
1while left < right and nums[left]
==nums[left -1]
: left +=
1else
: right -=
1while left < right and nums[right]
==nums[right +1]
: right -=
1return closestsum
16 最接近的三數之和
給定乙個包括 n 個整數的陣列nums和 乙個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2 1 2 思考...
16 最接近的三數之和
給定乙個包括 n 個整數的陣列nums和 乙個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2 1 2 如果...
16 最接近的三數之和
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2...