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