「學而不思則惘」
題面:給定乙個排序好的陣列,兩個整數 k 和 x,從陣列中找到最靠近 x(兩數之差最小)的 k 個數。返回的結果必須要是按公升序排好的。如果有兩個數與 x 的差值一樣,優先選擇數值較小的那個數。
示例 1:思路:陣列本來是有序的,所以可以使用雙下標逼近法去逼近,如果左邊靠x近(差值絕對值小),那麼右邊左移;否則,左邊右移。空間:o(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
1靈魂拷問:要是無序陣列怎麼辦?class
solution ;
8 vector res =arr;
9while(res.size() >k)
1016
return
res;17}
18//
時間o(n),空間o(1)
19 vector findclosestelements(vector& arr, int k, int
x) ;
2324
int l = 0, r = len-1;25
while((r - l + 1) >k)
2632
return vector(arr.begin()+l, arr.begin()+l+k);33}
34 };
先排序,再如法炮製?能優化嗎?
leetcode658 找到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...
Leetcode658題找到k個最接近的數
題目 給定乙個排序好的陣列,兩個整數 k 和 x,從陣列中找到最靠近 x 兩數之差最小 的 k 個數。返回的結果必須要是按公升序排好的。如果有兩個數與 x 的差值一樣,優先選擇數值較小的那個數。輸入 1,2,3,4,5 k 4,x 3 輸出 1,2,3,4 k 的值為正數,且總是小於給定排序陣列的長...
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...