658. 找到 K 个最接近的元素
给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。
示例 1:
输入: [1,2,3,4,5], k=4, x=3
输出: [1,2,3,4]示例 2:
输入: [1,2,3,4,5], k=4, x=-1
输出: [1,2,3,4]
题解
/**
* @param {number[]} arr
* @param {number} k
* @param {number} x
* @return {number[]}
*/
var findClosestElements = function(arr, k, x) {
let i =arr.length - 1
while (i>0) {
if (arr[i] > x && arr[i] - x >= x - arr[0] && arr.length > k) {
arr.pop()
}
if (x > arr[0] && x - arr[0] > arr[i] - x && arr.length > k) {
arr.shift()
}
if (arr.length == k) {
return arr
}
i--
}
return arr
};