
题目
给定数组和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; } };
|
近期评论