题目描述 代码 class Solution { public: int threeSumClosest(vector<int>& nums, int target) { // 排序,遍历,内部双指针 sort(nums.begin(),nums.end()); int closestNum = nums[0] + nums[1] + nums[2]; for (int i = 0; i < nums.size() - 2; i++) {//i是第一个数 int l = i + 1, r = nums.size() - 1;//l和r是双指针 while (l < r){ int threeSum = nums[l] + nums[r] + nums[i]; if (abs(threeSum - target) < abs(closestNum - target)) {//abs绝对值函数 closestNum = threeSum; } if (threeSum > target) { r--; } else if (threeSum < target) { l++; } else { // 如果已经等于target的话, 肯定是最接近的 return target; } } } return closestNum; } };