leetcode-16-3sum closest

题目

给定数组和target,返回数组中3个数的和,和target最相近的三个数,返回该3个数和

分析

略(双指针实现)

C++代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
int (vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
int res = nums[0] + nums[1] + nums[2];
int _dis = abs(target - res);
for(int i = 0; i < nums.size(); i++)
{
int j = i + 1;
int k = nums.size() - 1;
while(j < k){
int sum = nums[i] + nums[j] + nums[k];
if(abs(sum - target) < _dis)
{
res = sum;
_dis = abs(sum - target);
}
else if(sum < target) j++;
else k--;
}
}
return res;
}
};