文章目录
题目描述
给定一个数组,编写一个函数,来计算他的最大N个数和最小N个数的和,需要对数组进行去重
输入描述
第一行输入M,M表示数组大小
第二行输入M个数,表示数组内容
第三行输入N表示需要计算的最大最小N的个数
输出描述
输出最大N个数和最小N个数的和
示例1
输入
5
95 88 83 64 100
2
输出342
说明:最大2个数[100 95] 最小2个数[83 64],输出342
示例2
输入
5
3 2 3 4 2
2
输出-1
说明:最大两个数是[4 3]最小2个数是[3 2],有重叠输出为-1
思路
去重 : 利用set
最大,最小 : 排序。
排序+去重:TreeSet
代码
public class Demo02 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
TreeSet<Integer> treeSet = new TreeSet<>();
int m = in.nextInt();
for (int i = 0; i < m; i++) {
treeSet.add(in.nextInt());
}
int n = in.nextInt();
if (treeSet.size() < 2 * n) {
System.out.println(-1);
return;
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += treeSet.first();
treeSet.remove(treeSet.first());
sum += treeSet.last();
treeSet.remove(treeSet.last());
}
System.out.println(sum);
}
in.close();
}
}