Leetcode 658.找到K個最接近的元素
阿新 • • 發佈:2019-02-18
分享圖片 color targe 不為 升序 src 更改 return list
找到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]
說明:
- k 的值為正數,且總是小於給定排序數組的長度。
- 數組不為空,且長度不超過 104
- 數組裏的每個元素與 x 的絕對值不超過 104
更新(2017/9/19):
這個參數 arr 已經被改變為一個整數數組(而不是整數列表)。 請重新加載代碼定義以獲取最新更改。
思路
Intuitively, we can sort the elements in list arr by their absolute difference values to the target x. Then the sublist of the first k elements is the result after sorting the elements by the natural order.
1 import java.util.ArrayList; 2import java.util.Collections; 3 import java.util.List; 4 5 class Solution { 6 public List<Integer> findClosestElements(int[] arr, int k, int x) { 7 List<Integer> list=new ArrayList<>(); 8 for(int number:arr){ 9 list.add(number); 10 }11 Collections.sort(list,(a, b)->a==b?a-b:Math.abs(a-x)-Math.abs(b-x)); 12 list=list.subList(0,k); 13 Collections.sort(list); 14 return list; 15 } 16 }
Leetcode 658.找到K個最接近的元素