給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。
例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.
與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).
python:
排序+雙指標
演算法流程:
特判,對於陣列長度nn,如果陣列為null或者陣列長度小於3,返回。
對陣列進行排序,並定義resres,儲存最接近和。
遍歷排序後陣列:
對於重複元素,跳過,避免重複計算(也可以不跳過)
令左指標l=i+1l=i+1,右指標r=n-1r=n−1,當l若cur_sum-targetcur_sum−target小於0,說明nums[l]nums[l]太小,ll右移
**
class solution:
def threesumclosest
(self, nums: list[
int]
, target:
int)
->
int:
n=len(nums)
if(not nums or n<3)
:return none
nums.
sort()
res=
float
("inf"
)for i in range
(n):
if(i>
0 and nums[i]
==nums[i-1]
):continue
l=i+
1 r=n-
1while
(l: cur_sum=nums[i]
+nums[l]
+nums[r]
if(cur_sum==target)
:return target
if(abs
(cur_sum-target)
<
abs(res-target)):
res=cur_sum
if(cur_sum-target<0)
: l+=
1else
: r-=
1return res
c++:
class solution
int left = i+1;
int right = nums.
size()
-1;while
(left < right)
else
if(nums[left]
+nums[right]
+fix > target)
right--;}
else
left++;}
}}return result;}}
;
LeetCode刻意練習05 最接近的三數之和
題目 給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。思路 1.將給定的陣列進行排序 2.遍歷陣列,並且將第乙個元素置為nums i 3.定義兩個指標,左指標為 ...
最接近的三數之和
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2...
最接近的三數之和
給定乙個包括 n 個整數的陣列nums和 乙個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2 1 2 pu...