658 找到K個最接近的元素

2022-08-11 05:36:11 字數 800 閱讀 6497

2020-03-10

找到 k 個最接近的元素

給定乙個排序好的陣列,兩個整數 k 和 x,從陣列中找到最靠近 x(兩數之

差最小)的 k 個數。返回的結果必須要是按公升序排好的。如果有兩個數與 x

的差值一樣,優先選擇數值較小的那個數。

說明:

示例:

輸入: [1,2,3,4,5], k=4, x=3

輸出: [1,2,3,4]

輸入: [1,2,3,4,5], k=4, x=-1

輸出: [1,2,3,4]

題解:

思路1: 二分查詢 + 雙指標

先用二分查詢找到與x最接近的下標i, 再從i往前後擷取k成為新陣列

再用雙指標在最前最後判斷去掉差值更大的那一邊直到陣列長度等於k

var findclosestelements = function

(arr, k, x)

if (arr[mid] < x) l = mid + 1;

if (arr[mid] > x) r =mid;

}i = i > -1 ?i : l;

return

i; }

const i =getindex(arr, x);

arr = arr.slice(math.max(i - k, 0), math.min(i +k, arr.length)); // 從i開始向前後擷取k

while (arr.length >k)

else

} return

arr;

}

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...

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,...

找到 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,...