1471. The k Strongest Values in an Array
public class ID{
public int index;
public double distance;
}
public int[] getStrongest(int[] arr, int k) {
Arrays.sort(arr);
int[]output=new int[k];
int mid=0;
List<ID>list=new ArrayList<>();
mid=(arr.length-1)/2;
for(int i=0;i<arr.length;i++){
ID id=ne w ID();
id.index=i;
id.distance=Math.abs(arr[i]-arr[mid]);
list.add(id);
}
Collections.sort(list,(Comparator<ID>)(o1,o2)->{
if(o2.distance-o1.distance>0){
return 1;
}else if(o2.distance-o1.distance<0){
return -1;
}else{
if(arr[o2.index]>arr[o1.index]){
return 1;
}else{
return -1;
}
}
});
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).index);
}
for(int i=0;i<k;i++){
output[i]=arr[list.get(i).index];
}
return output;
}