原题地址
华为OD机试真题-寻找身高相近的小朋友-2023年OD统一考试(C卷)_华为机考题库2023-CSDN博客
解题思路
思路1:使用辅助空间
使用辅助空间Map,key值为身高,value为身高差的绝对值,排序时,将value的值作为比较的依据
思路2:重写比较器
根据题干重写比较器的规则.比较器如果返回负数,那么第一个参数排在第二个参数前面
代码实现
这里给出思路2的代码
public static void solution(Integer arr[], int h, int n) {
Arrays.sort(arr, (o1, o2)
-> Math.abs(o1 - h) != Math.abs(o2 - h)
? Math.abs(o1 - h) - Math.abs(o2 - h) : o1 - o2);
}