2025年- H109-Lc217--658. 找到 K 个最接近的元素(双指针+二分)--Java版
1.题目描述
2.思路
(1)排序好,联想到用二分
(2)用左右指针
3.代码实现
class Solution {public List<Integer> findClosestElements(int[] arr, int k, int x) {int n=arr.length;int left=0;int right=n-1;List<Integer> num=new ArrayList<>();//所有元素的个数要比要查找的个数k大while(right-left+1>k){//如果x左半部分的元素距离比x右半部分的距离小,我们选择跳过右半部分的元素if(Math.abs(arr[left]-x)<=Math.abs(arr[right]-x)){right--;}else//如果x左半部分的元素比x右半部分的值大,我们选择跳过左半部分的元素{left++;}}for(int i=left;i<=right;i++){num.add(arr[i]);}//return num.toArray();return num;}}