在外汇管理网站做,捷信做单网站,大连比较好的软件公司,超酷网站模板给定一个排序好的数组#xff0c;两个整数 k 和 x#xff0c;从数组中找到最靠近 x#xff08;两数之差最小#xff09;的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样#xff0c;优先选择数值较小的那个数。
示例 1:
输入: [1,2,3,4,5], k4,…给定一个排序好的数组两个整数 k 和 x从数组中找到最靠近 x两数之差最小的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样优先选择数值较小的那个数。
示例 1:
输入: [1,2,3,4,5], k4, x3 输出: [1,2,3,4]
代码
class Solution {public int getFindClosestElements(int[] arr, int x) {//查找x在数组中的位置int narr.length,l0,rn-1;while (lr){int mid(r-l)/2l;if(arr[mid]x)return mid;else if(arr[mid]x)lmid1;else rmid-1;}if(l0) return l;if(ln) return n-1;return arr[l]-xx-arr[r]?r:l;//比较应该放在l还是r}public ListInteger findClosestElements(int[] arr, int k, int x) {int narr.length,lgetFindClosestElements(arr, x);LinkedListInteger listnew LinkedList();list.add(arr[l]);k--;int lel-1,ril1;//双指针while (k0){int lsle0?Integer.MAX_VALUE:x-arr[le];int rsrin?Integer.MAX_VALUE:arr[ri]-x; if(rsls)//取接近的那个数{list.addLast(arr[ri]);}else list.addFirst(arr[le--]);k--;}return list;}
}