Leetcode talk05最接近的三數之和

2021-10-03 12:49:50 字數 1614 閱讀 3108

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