16 最接近的三數之和 無短路判斷

2021-10-24 17:19:32 字數 1189 閱讀 4701

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

示例:

輸入:nums = [-1,2,1,-4], target = 1

輸出:2

解釋:與 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。

class solution 

int sum = nums[i]+nums[left]+nums[right];

if (abs(sum - target) < abs(nearest - target)) //修改值

nearest = sum;

if (sum == target) //根據sum與target的相對大小修改指標

break;

else if (sum < target)

++left;

else

--right;}}

return nearest;

}};

另一種編碼如下:

class solution 

int sum = nums[first] + nums[second] + nums[third];

diff = abs(target - sum);

if (diff < mindiff)

if (sum < target)

second++;

else if (sum > target)

third--;}}

return res;

}};

綜上,結合三數之和中三數之和的題目,總結該題目的要點

1:target未指定正負,相對於三數之和,本題目無法對三數的首數做短路判斷,因為首數可為正(target為正),可為0,可為負(target為負,越加和越小,越接近target)

2:對於查詢目標數對的題目,需要注意對各個數進行去重判斷,防止做重複的後續工作

3:初始化可以選擇最極端的初始化,可以用有效數進行乙個初始化

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