企业门户网站案例,有什么wordpress,开创集团与百度,哪里找专业做网站的人16. 最接近的三数之和 
题目描述 
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数#xff0c;使它们的和与 target 最接近。 
返回这三个数的和。 
假定每组输入只存在恰好一个解。 
示例 1#xff1a; 
输入#xff1a;nums  [-1,2,1…16. 最接近的三数之和 
题目描述 
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数使它们的和与 target 最接近。 
返回这三个数的和。 
假定每组输入只存在恰好一个解。 
示例 1 
输入nums  [-1,2,1,-4], target  1输出2解释与 target 最接近的和是 2 (-1  2  1  2) 。 
示例 2 
输入nums  [0,0,0], target  1输出0 
提示 
3  nums.length  1000-1000  nums[i]  1000-104  target  104 
解题方法 
排序双指针 
C 语言 
int my_cmp(const void* a, const void* b) { return *(int*)a - *(int*)b; }int threeSumClosest(int* nums, int numsSize, int target) {qsort(nums, numsSize, sizeof(int), my_cmp); // 排序int left  0, right  0; // 定义双指针int min  INT_MAX / 10;for (int i  0; i  numsSize; i) {if (i  0  nums[i]  nums[i - 1]) // 跳过重复元素{continue;}left  i  1;right  numsSize - 1;while (left  right) {int sum  nums[i]  nums[left]  nums[right];if (sum  target) {left; // 移动左指针使和增大} else if (sum  target) {right--; // 移动右指针使和减小} else {return sum; // 相等直接返回}if (abs(sum - target)  abs(min - target)) {min  sum; // 保存最接近的和}}}return min;
}