Leetcode 16 最接近的三數之和

2021-09-10 12:57:36 字數 1305 閱讀 5180

給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。

例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.

與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).

用三個指標i,j,k以i=0, j=i+1, k=nums.length()-1為起點掃瞄,當三個數的和小於最小值時,更新sum。時間複雜度o(n^3)

class

solution

intthreesumclosest

(vector<

int>

& nums,

int target)

for(

int i=

0;i)sort

(num_i, num_i+len, cmp)

; sum = num_i[0]

+ num_i[1]

+ num_i[2]

; minus =

abs(target - sum)

;for

(int i=

0;i(delta > minus)

else}}

}return sum;}}

;

將陣列排序,第二層迴圈使用雙指標,乙個指向i+1,乙個指向末尾。計算三個數的和sum,如果target-sum = deltatarget時,將尾指標向前移動;

當尾指標和頭指標重疊時,結束。

優化後的時間複雜度為o(n^2)。

class

solution

intthreesumclosest

(vector<

int>

& nums,

int target)

for(

int i=

0;i)sort

(num_i, num_i+len, cmp)

; sum = num_i[0]

+ num_i[1]

+ num_i[2]

; minus =

abs(target - sum)

;for

(int i=

0;i(tmpsum > target)

else

if(tmpsum < target)

else}}

return sum;}}

;

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 顯然...

leetcode16 最接近的三數之和

leetcode16 最接近的三數之和原題鏈結 題意簡述給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target...