力扣 16. 最接近的三数之和
qsort函数:
//下方代码没有进行空间上的优化
//定义
int cmp(const void* a, const void* b) {//首部int是不因类型变化而变化
return *(int*)a - *(int*)b;//若为double则需要加?1:-1;
}
//使用
qsort(nums, numsSize, sizeof(int), cmp);
//or
qsort(nums, numsSize, sizeof(nums[0]), cmp);
//数组名,数组长度,类型内存空间,定义的函数名
int cmp(const void* a, const void* b) {
return *(int*)a - *(int*)b;
}
int threeSumClosest(int* nums, int numsSize, int target)
{
int i,j,k;
qsort(nums, numsSize, sizeof(nums[0]), cmp);
int best = rand();//注意这个位置不是必须如此
for (i = 0; i < numsSize; ++i){
j=i+1;
k = numsSize - 1;
while (j < k){
int sum = nums[i] + nums[j] + nums[k];
if (sum == target)
return target;
else if (abs(sum - target) < abs(best - target))
best = sum;
if (sum > target)
k--;
else
j++;
}
}
return best;
}