天天看點

1471. The k Strongest Values in an Array

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;
    }