给定一个排序好的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。
整数 a 比整数 b 更接近 x 需要满足:
|a - x| < |b - x| 或者
|a - x| == |b - x| 且 a < b
来源:力扣(LeetCode)
双指针
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int
* findClosestElements(int* arr, int arrSize, int k, int x, int* returnSize)
{
int left = 0;
int right = arrSize - 1;
while (right >= k + left)
{
if (abs (arr[left] - x) <= abs (arr[right] - x))
// 调用 abs 函数取绝对值
{
right --;
}
else
{
left ++;
}
}
*returnSize = k;
return &arr[left];
}