20.最大N个数和最小N个数的和
给定一个数组,编写一个函数,来计算他的最大N个数和最小N个数的和,需要对数组进行去重
说明
第一行输入M,M表示数组大小
第二行输入M个数,表示数组内容
第三行输入N表示需要计算的最大最小N的个数
输出描述
输出最大N个数和最小N个数的和
例一:
输入
5
95 88 83 64 100
2
输出
342
说明:最大2个数[100 95] 最小2个数[83 64],输出342
例二
输入
5
3 2 3 4 2
2
输出
-1
说明:最大两个数是[4 3]最小2个数是[3 2],有重叠输出为-1
查看代码
import java.util.*;
public class Demo20 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int m = Integer.parseInt(sc.nextLine());
String[] split = sc.nextLine().split(" ");
int n = Integer.parseInt(sc.nextLine());
TreeSet<Integer> set = new TreeSet<>();
for(String s : split){
set.add(Integer.parseInt(s));
}
if(set.size() < 2 * n){
System.out.println(-1);
return ;
}
int sum = 0;
Integer[] ints = new Integer[set.size()];
set.toArray(ints);
for(int i = 0; i < n; i++){
sum += ints[i] + ints[set.size() - 1 - i];
}
System.out.println(sum);
}
}
关键了解好 TreeSet的特性!