Java-身高排序
題目描述
小明今年升學到了小學一年級,
來到新班級后,發(fā)現(xiàn)其他小朋友身高參差不齊,
然后就想基于各小朋友和自己的身高差,對他們進行排序,
請幫他實現(xiàn)排序
輸入描述
第一行為正整數(shù)H和N
0 < H < 200 為小明的身高
0 < N < 50 為新班級其他小朋友個數(shù)
第二行為N個正整數(shù)
H1 ~ Hn分別是其他小朋友的身高
取值范圍0 < Hi < 200
且N個正整數(shù)各不相同
輸出描述
輸出排序結(jié)果,各正整數(shù)以空格分割
和小明身高差絕對值最小的小朋友排在前面
和小明身高差絕對值最大的小朋友排在后面
如果兩個小朋友和小明身高差一樣
則個子較小的小朋友排在前面
示例一
輸入
100 10
95 96 97 98 99 101 102 103 104 105
輸出
99 101 98 102 97 103 96 104 95 105
參考解題 Java
import java.util.*;
public class Main{
?public static void main(String[] args) {
? ?try (Scanner scanner = new Scanner(System.in)) {
? ? ?int h = scanner.nextInt();
? ? ?int n = scanner.nextInt();
? ? ?List<Integer> highs = new ArrayList<>(n);
? ? ?for (int i = 0; i < n; i++) {
? ? ? ?highs.add(scanner.nextInt());
? ? ?}
? ? ?solution(h, highs);
? ?}
?}
?private static void solution(int h, List<Integer> highs) {
? ?highs.sort((h1, h2) -> {
? ? ?int diff1 = Math.abs(h1 - h);
? ? ?int diff2 = Math.abs(h2 - h);
? ? ?return diff1 == diff2 ? h1 - h2 : diff1 - diff2;
? ?});
? ?for (int i = 0; i < highs.size(); i++) {
? ? ?System.out.print(highs.get(i));
? ? ?if (i != highs.size() - 1) {
? ? ? ?System.out.print(" ");
? ? ?}
? ?}
?}
}
標簽: