Find K Closest Elements
class Solution {
public List<Integer> findClosestElements(int[] arr, int k, int x) {
List<Integer> result = new ArrayList<>(k);
int position = Arrays.binarySearch(arr, x);
int left;
int right;
if(position < 0){
position = -position - 1;
left = position - 1;
right = position;
}
else{
left = position - 1;
right = position + 1;
}
while(right - left - 1 != k){
if(left < 0){
right ++;
}
else if(right > arr.length - 1){
left --;
}
else if(arr[right] - x < x - arr[left]){
right ++;
}else{
left --;
}
}
for(int i = 0; i < k; i ++){
result.add(arr[left + i + 1]);
}
return result;
}
}

最后更新于
这有帮助吗?