658找到K個最接近的元素

2021-09-28 18:08:49 字數 820 閱讀 1719

題目描述:給定乙個排序好的陣列,兩個整數 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]說明:k 的值為正數,且總是小於給定排序陣列的長度。

陣列不為空,且長度不超過 104

陣列裡的每個元素與 x 的絕對值不超過 104

更新(2017/9

/19):

解題思路:借鑑了最優做法,就是找到返回陣列的起點位置,也就是左邊界,令heigh=arrsize-k,是因為因為最少要返回k個數,所以起點位置最多就只能到arrsize-k,然後在這個區間裡找左邊界。
int

*findclosestelements

(int

* arr,

int arrsize,

int k,

int x,

int* returnsize)

else

} r_index=0;

for(

int i=low;i)return result;

}

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

658 找到K個最接近的元素

2020 03 10 找到 k 個最接近的元素 給定乙個排序好的陣列,兩個整數 k 和 x,從陣列中找到最靠近 x 兩數之 差最小 的 k 個數。返回的結果必須要是按公升序排好的。如果有兩個數與 x 的差值一樣,優先選擇數值較小的那個數。說明 示例 輸入 1,2,3,4,5 k 4,x 3 輸出 1...

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