題:給定乙個包括n個整數的陣列nums和乙個目標target,找出nums中的三個整數,使得它們的和與target最接近,返回三個數的和
法:遍歷+雙指標,每次遍歷到nums[i]的時候,設left,right=i+1,length-1,再將當前三個數之和相加記為tmpsum,如果tmpsum比target大則移動右指標,如果tmpsum比target小則移動左指標,如果和target相等的話直接return tmpsum,否則比較tmpsum-target與res-target的絕對值,看是否更新res。
注意:要先對nums排序,不然不能根據tmpsum與target的值大小來確定左右指標的移動
def threesumclosest(self, nums, target):
""":type nums: list[int]
:type target: int
:rtype: int
"""length=len(nums)
if length<3:return none
nums.sort()
res=nums[0]+nums[1]+nums[2]
for i in range (length):
left,right=i+1,length-1
while lefttarget:
right-=1
elif tmpsumleft+=1
else:return tmpsum
if abs(tmpsum-target)res=tmpsum
return res
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...